Eingelesenen String vergleichen

Shrrgnien

Mitglied
Hi,
ich lese Strings aus einer einfachen Textdatei aus.
enty[2] is ein Zahlen wert und enty[3] ist eine Prozentangabe ohne das %-Zeichen.
Wenn entry [4] == "Updated" ist soll nichts gemacht werden.
Sonst soll die Prozent auf den Zahlenwert draufgerechnet werden und anstelle von entry[4] "Updated" gesetzt.
Die Rechnung funktioniert an sich, nur der Vergleich funktioniert weder mit (entry[4] == "Updated")
noch so wie im folgenden Quelltext, sonst würde die Exception nicht kommen.
Wenn auf dem entry[4] ein Datum steht funktionier auch alles.
Java:
private void update() {
    	for (String[] entry : _data) {
    		System.out.println(entry[4]);
    		String updated = new String("Updated");
    		if (entry[4].equals(updated)){
	    		try {
					Date call = _dateformat.parse(entry[4]);
					Date now = new Date();
					if (call.before(now)){
						BigDecimal rate = (BigDecimal) _decformat.parse(entry[3]);
						BigDecimal value = (BigDecimal) _decformat.parse(entry[2]); 
						BigDecimal percent = rate.divide(new BigDecimal(100));
						value = value.add(value.multiply(percent));
						entry[4] = "Updated";
						entry[2] = value.toString();
					}
					
				} catch (ParseException e) {
					e.printStackTrace();
				}
    		}
    	}
    }
Hiermit wird der _data Vector gefüttert:
Java:
private Vector<String[]> getFileData() {
    	try
        {
    		Map<Integer, String> data = new HashMap<Integer, String>();
    		FileInputStream in = new FileInputStream(new File("file.dat").getAbsolutePath());
    		BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    		String str;
    		int i = 0;
			while ((str = reader.readLine()) != null) {
				data.put(i, str);
				i++;
			}
    		return(getEntries(data));
        }
        catch (IOException e) {
        	e.printStackTrace();
        }
		return null;
    }
    
    private Vector<String[]> getEntries(Map<Integer, String> data){
    	Vector<String[]> entries = new Vector<String[]>();
    	for (int i = 0; i < data.size(); i++) {
    		StringTokenizer strTok = new StringTokenizer(data.get(i));
    		String[] entry = new String[5];
        	entry[0] = strTok.nextToken();
        	entry[1] = strTok.nextToken();
        	entry[2] = strTok.nextToken();
        	entry[3] = strTok.nextToken();
        	entry[4] = strTok.nextToken();
        	entries.add(entry);
        }
    	return entries;
    }

Hier die Konsolenausgabe:

Updated
java.text.ParseException: Unparseable date: "Updated"
at java.text.DateFormat.parse(DateFormat.java:337)
at einleser.Einleser.update(Einleser.java:84)
at einleser.Einleser.<init>(Einleser.java:75)
at einleser.EinleserStarter.main(EinleserStarter.java:15)

Mfg
 
Sorry, liegt wohl an der Uhrzeit, aber hab`s mir jetzt zwei mal durchgelesen und versteh`s noch immer nicht so recht.
Du sagst, "Wenn entry [4] == "Updated" ist soll nichts gemacht werden."

Was heißt "nichts"?

Java:
String updated = new String("Updated");   //new String ist eig. immer unnötig --> "Updated" sollte reichen
            if (entry[4].equals(updated)){

müsste die Abfrage dann nicht negiert sein?! --> if (!entry[4].equals(updated)){
Weil das macht ja dann natürlich auch kein Sinn, welches Datum soll bei "Updated" denn auch herauskommen
(dateformat.parse(entry[4]); ) ???:L --> daher die Exception
 
Wow, danke für die schnelle antwort.
Es liegt definitiv bei mir an der Uhrzeit 😀
ich hatte den Vergleich vorher mit entry[4] != "Updated" gemacht, dann hab ich hier im forum gelesen dass man equals nehmen sollte und die negierung vergessen...
Danke
 

Zurück
Oben