Schleife rausspringen / Wert merken

H

hel5050

Gast
Hallo Leute!

Hab folgendes Problem:

Ich bekomm ein Array, wo viele Datensätze(Umsätze) drinnen stehen.
Aus so einem Datensatz lösche ich unnötige Zeichen die darin enthalten sind (z.B.: "&" , Leerzeilen usw.)

In meiner for-Schleife hab ich auch noch 2 ifs eingebaut (für spezielle Prüfungen)

Im innersten if prüfe ich ab, ob der Text die Wörter: "DPNR", "Depot", "account" oder "LGNR" enthalten sind

=> wenn diese Vorhanden sind, dann speichere ich mir in einem boolean mit Wert true ab
=> wenn sie nicht vorkommen ein false (false is defaultmäßig bereits am beginn iwo festgelegt)

hier ein auszug aus meinem (leider nicht schönen) Code:

Java:
..umsatzAnzeige = ...

boolean isDepot = false;
String textNeu = null;
String text = null;
....

UmsatzListeDetailVO udetail = (UmsatzListeDetailVO) umsatzAnzeige.get(i);
if(udetail.getUmsatzTexte()!=null && udetail.getUmsatzTexte().length > 0){
    //ins texteVO werden die Umsatztexte gespeichert(beinhalten die Wärter LGRN,DPNR,Depot...
    UmsatzTextVO texteVO[] = udetail.getUmsatzTexte();					
    //Schleife durchläuft alle Textzeilen des Umsatz-Arrays
    for (int x = 0, s = texteVO.length; x < s; x++) {
	text = texteVO[x].getUmttext();
    if(udetail.getUmsouref()!=null && udetail.getUmsouref().length() > 0 ){
        if(textNeu.contains("DPNR")||textNeu.contains("Depot")||    textNeu.contains("account")||textNeu.contains("LGNR")){	
            isDepot = true;
	    }
     }
   }
}
...
.

Ich logge mir eine Ausgabe raus, und zwar mittels System.out => textNeu und isDepot
...
Kommt So daher:

textNeu: Verkauf KONT
textNeu: ISIN AT0000758032 OTTAKRINGER VZG.O.N. 20090427 83176800
textNeu: 1,00000 STK
isDepot: false

textNeu: Einbuchung LGNR 00012559999/20121102-83767861
textNeu: ISIN AT0000A0AGV3 BOEHLER-UDDEHOLM -ANSP- 100,00000 STK
isDepot: true

=> jetz merkt sich "isDepot" den Wert True aber der nächste Datensatz muss FALSE sein, weil es den Text "KONT" beinhaltet!

textNeu: Verkauf KONT
ISIN AT0000758032 OTTAKRINGER VZG.O.N. 20090519 83878162
textNeu: 10,00000 STK
isDepot: true

==============

Kann mir da jemand helfen, meinen Code iwie zu ändern bzw mir weiterhelfen, dass ich immer wenn ich die Wörter: "DPNR", "Depot", "account" oder "LGNR" bekomme ein True und andernfalls ein False mir iwo speichere!?

(Ich brauch nämlich dieses Kennzeichen um einen Link anzuzeigen in weiterer Folge...)

Danke im Voraus!
 
H

hel5050

Gast
hopsi vergessen textNeu zu erwähnen:

textNeu = text.replaceAll("&nbsp;"," ").trim();
 
T

Trolllllll

Gast
Dann musst du einfach vor dem nächsten Datensatz dein
Code:
isDepot
wieder auf false setzen
 
H

hel5050

Gast
Nein das geht so nicht, weil ich nach beendigung dieser schleife weiters unten im Code mein "isDepot" für eine Prüfung hernehme, d.h. dann würd da immer "false" drinnen stehen..
 
T

Trolllllll

Gast
Was ist dann dein Problem, willst du es dannach verwenden oder nicht, wenn ja dann ist doch alles in ordnung, wenn nein, dann setze es wieder auf false
 

bERt0r

Top Contributor
Dann wird dein Algorithmus so nicht funktionieren. Da können wir dir jetzt aber nicht dabei helfen, weil wir nicht wissen was du machen sollst.
 

ThreadPool

Bekanntes Mitglied
Nein das geht so nicht, weil ich nach beendigung dieser schleife weiters unten im Code mein "isDepot" für eine Prüfung hernehme, d.h. dann würd da immer "false" drinnen stehen..

Dann versuch anstelle von
Java:
if(udetail.getUmsouref()!=null && udetail.getUmsouref().length() > 0 ){
        if(textNeu.contains("DPNR")||textNeu.contains("Depot")||    textNeu.contains("account")||textNeu.contains("LGNR")){ 
            isDepot = true;
        }
     }

das hier

Java:
if(udetail.getUmsouref()!=null && udetail.getUmsouref().length() > 0 ){
            
            isDepot = textNeu.contains("DPNR")
                    ||textNeu.contains("Depot")
                    ||textNeu.contains("account")
                    ||textNeu.contains("LGNR"));
        }

Macht aber auch nur Sinn wenn er immer in das if abzweigt.
 

Reggie

Aktives Mitglied
Tach,

Mach doch eine eigene kleine Klasse für die Daten anstatt nur String.
Java:
Datensatz data = null;
String text = null;
....
 
UmsatzListeDetailVO udetail = (UmsatzListeDetailVO) umsatzAnzeige.get(i);
if(udetail.getUmsatzTexte()!=null && udetail.getUmsatzTexte().length > 0){
    //ins texteVO werden die Umsatztexte gespeichert(beinhalten die Wärter LGRN,DPNR,Depot...
    UmsatzTextVO texteVO[] = udetail.getUmsatzTexte();                  
    //Schleife durchläuft alle Textzeilen des Umsatz-Arrays
    for (int x = 0, s = texteVO.length; x < s; x++) {
    text = texteVO[x].getUmttext();
    if(udetail.getUmsouref()!=null && udetail.getUmsouref().length() > 0 ){
        if(data.getText().contains("DPNR")||data.getText().contains("Depot")||    data.getText().contains("account")||data.getText().contains("LGNR")){ 
           data.setDepot(true);
        }
     }
   }
}
Java:
public class Datensatz{
private boolean depot = false;
private String Text = null;

public void setDepot(boolean depot){
    this.depot = depot;
}
public String getText(){
    return text;
}
}

Natürlich noch nen Constructor und die restlichen getter/setter. Dann müsst gehn wie du willst.
 
Zuletzt bearbeitet:

Neue Themen


Oben