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.
Hiermit wird der _data Vector gefüttert:
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
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();
}
}
}
}
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