siDDis Skrevet 22. april 2005 Del 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); } } Lenke til kommentar
buskmann Skrevet 22. april 2005 Del Skrevet 22. april 2005 Du sender noe rart til denne: Integer.parseInt(argsbuffer[3]); Ta en println på dette elementet først. Lenke til kommentar
Patton Skrevet 23. april 2005 Del 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. Lenke til kommentar
siDDis Skrevet 23. april 2005 Forfatter Del 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 Lenke til kommentar
siDDis Skrevet 27. april 2005 Forfatter Del 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? Lenke til kommentar
boemane Skrevet 27. april 2005 Del 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()); Lenke til kommentar
siDDis Skrevet 27. april 2005 Forfatter Del Skrevet 27. april 2005 det funka ikkje Lenke til kommentar
Patton Skrevet 27. april 2005 Del 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; Lenke til kommentar
siDDis Skrevet 28. april 2005 Forfatter Del 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? Lenke til kommentar
Patton Skrevet 28. april 2005 Del 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. Lenke til kommentar
siDDis Skrevet 2. mai 2005 Forfatter Del 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? Lenke til kommentar
Patton Skrevet 3. mai 2005 Del 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 Lenke til kommentar
siDDis Skrevet 3. mai 2005 Forfatter Del Skrevet 3. mai 2005 Du hadde rett, eg stengte file readeren for tidlig. Takk Lenke til kommentar
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å