siDDis Skrevet 22. april 2005 Skrevet 22. april 2005 Eg har eit problem med å få kjørt detta programmet. Kompileringa går fint men kjøringa ender med feilmeldinger. C:\java>java Filskriving Exception in thread "main" java.lang.NumberFormatException: For input string: "3 ;" at java.lang.NumberFormatException.forInputString(NumberFormatException. java:48) at java.lang.Integer.parseInt(Integer.java:456) at java.lang.Integer.parseInt(Integer.java:497) at Filskriving.main(Filskriving.java:34) Kildekoden og fila som blir lest lastes ned her http://213.167.99.110/kundedata.zip For dei som kan finna ut av det ved å bare sjå på koden så legger eg det bare ut her import java.util.*; import java.io.*; public class Filskriving{ public static void main(String[] args) { HashMap data = new HashMap(); FileReader fileReader = null; try { // create reader for the file fileReader = new FileReader("c:\\kundedata.txt"); } catch (FileNotFoundException e) { System.out.println("File: " + "kundedata.txt" + " was not found."); } // buffered reader allowing reading line by line // instead of dealing with byte-buffers directly. BufferedReader bufferedReader = new BufferedReader(fileReader); try { String line = bufferedReader.readLine(); while( line != null ) { // split the line into sections // FIXME: not sure if this leaves "; " in the String String[] argsbuffer = line.split("; "); String name = argsbuffer[0]; String address = argsbuffer[1]; boolean blocked = Boolean.getBoolean(argsbuffer[2]); int warnings = Integer.parseInt(argsbuffer[3]); // FIXME: Add data to wanted structure data.put( name, new Kontoer (name, address, blocked, warnings)); // read next line of data line = bufferedReader.readLine(); } } catch ( IOException e ) { System.out.println("Error reading from file: " + "kundedata.txt"); e.printStackTrace(); } finally { try { // close the readers. fileReader.close(); bufferedReader.close(); } catch (IOException e) { // may not be a big deal. } } Iterator it = data.values().iterator(); while (it.hasNext()) { try{ Kontoer k = (Kontoer) it.next(); k.pdata(); }catch (Exception e) { } } } } class Kontoer{ int warnings; String name, address; boolean blocked; Kontoer(String name, String address, boolean blocked, int warnings) { this.name = name; this.address = address; this.blocked = blocked; this.warnings = warnings; } Kontoer(){ } void pdata() { System.out.println(name); System.out.println(address); System.out.println(blocked); System.out.println(warnings); } }
buskmann Skrevet 22. april 2005 Skrevet 22. april 2005 Du sender noe rart til denne: Integer.parseInt(argsbuffer[3]); Ta en println på dette elementet først.
Patton Skrevet 23. april 2005 Skrevet 23. april 2005 Du maa gjoere foelgende endringer: String[] argsbuffer = line.split("; "); til String[] argsbuffer = line.split("; "); argsbuffer[argsbuffer.length-1] = argsbuffer[argsbuffer.length-1].replace(";",""); ";" fjernes ikke ved slutten av hver linje, og du maa gjoere dette selv.
siDDis Skrevet 23. april 2005 Forfatter Skrevet 23. april 2005 Tusen takk Patton, det funka veldig bra Då er det vell heller aller best å bytte ut ending i txt fila heller først
siDDis Skrevet 27. april 2005 Forfatter Skrevet 27. april 2005 Har litt problemer med den eine linja mi, boolean blocked = Boolean.getBoolean(argsbuffer[2]); variabelen blocked får ikkje true verdi mens argsbuffer[2] får lest true, kan det skyldes whitespace?
boemane Skrevet 27. april 2005 Skrevet 27. april 2005 Har litt problemer med den eine linja mi, boolean blocked = Boolean.getBoolean(argsbuffer[2]); variabelen blocked får ikkje true verdi mens argsbuffer[2] får lest true, kan det skyldes whitespace? kan skyldes whitespace ja... argsbuffer[2].trim() skulle løse det: boolean blocked = Boolean.getBoolean(argsbuffer[2].trim());
Patton Skrevet 27. april 2005 Skrevet 27. april 2005 Boolean.getBoolean(String) er til tider litt brysom. Prøv: boolean blocked = new Boolean(argsbuffer[2].trim()).booleanValue(); Hvis det fremdeles ikke fungerer, saa burde denne ad-hoc løsningen ta knekken: boolean blocked = argsbuffer[2].toLowerCase().indexOf("true") >= 0;
siDDis Skrevet 28. april 2005 Forfatter Skrevet 28. april 2005 tusen takk, den første virka fint er det mulig å få ein liten forklaring på kva som er akkurat forskjellen der?
Patton Skrevet 28. april 2005 Skrevet 28. april 2005 static boolean getBoolean(String name) Returns true if and only if the system property named by the argument exists and is equal to the string "true". "True" og "TRUE" returnerer false. Dessuten har jeg alltid hatt litt problemer med dette kallet (stoler ikke på system property helt), og new Boolean(value).booleanValue() har alltid fungert for meg.
siDDis Skrevet 2. mai 2005 Forfatter Skrevet 2. mai 2005 Eg veit eg maser skikkeleg, men det dukker opp feil eg sliter virkeleg med å finna ut av. Nå har eg problemer med å lesa frå ein av filene try { String line = bufferedReader.readLine(); while( line != null ) { String[] argsbuffer2 = line.split("; "); argsbuffer2[argsbuffer2.length-1] = argsbuffer2[argsbuffer2.length-1].replace(";",""); String name = argsbuffer2[0]; String address = argsbuffer2[1]; boolean blocked = new Boolean(argsbuffer2[2].trim()).booleanValue(); int warnings = Integer.parseInt(argsbuffer2[3]); int kredittramme = Integer.parseInt(argsbuffer2[4]); int rabatt = Integer.parseInt(argsbuffer2[5]); int kontonr = Integer.parseInt(argsbuffer2[6]); kunder.put(kontonr, new Bkunder(name, address, warnings, blocked, kredittramme, rabatt, kontonr)); line = bufferedReader.readLine(); } } catch ( IOException e ) { System.out.println("Error reading from file: " + "bkundedata.txt"); e.printStackTrace(); } Feilmeldinga eg får når eg kjører programmet er Error reading from file: bkundedata.txt java.io.IOException: Stream closed at java.io.BufferedReader.ensureOpen(BufferedReader.java:97) at java.io.BufferedReader.readLine(BufferedReader.java:293) at java.io.BufferedReader.readLine(BufferedReader.java:362) at Meny.startmeny(Videoutleie.java:72) at Videoutleie.main(Videoutleie.java:10) Og sånn er fila som den leser ifrå Olav Gjerde; Oddernesveien 17; false; 0; 1000; 20; 11; Leif Krutt; Krutteg†rden 3; false; 0; 100; 10; 12; Kva som er gale?
Patton Skrevet 3. mai 2005 Skrevet 3. mai 2005 (endret) at Meny.startmeny(Videoutleie.java:72) Her er noe muffens. Du bruker sannsynligvis bufferedReader etter at den er lukket. Kan ikke si noe mer. Du maa legge ut all koden paa nytt inkludert Meny-klassen, og kommentere linjen som skaper bry (linje 72 i Videoutleie.java) Endret 3. mai 2005 av Patton
siDDis Skrevet 3. mai 2005 Forfatter Skrevet 3. mai 2005 Du hadde rett, eg stengte file readeren for tidlig. Takk
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå