eXeCuter_ Skrevet 15. november 2005 Del Skrevet 15. november 2005 Hei, jeg har laget et program for å søke gjennom en angitt fil ved navn "Datafil" som inneholder tall i intervallet 0 til 10000000. Jeg skal telle opp antall linjer i filen, og det har jeg fått til, og svaret er korrekt. Men maksimums og minimums verdier i filen, og antall ganger dem forekommer stemmer ikke overens. Jeg får: Største tallet: -2147483648 Antall ganger: 0 Minste tallet: 2147483647 Antall ganger: 0 Noe som er riv ruskende galt. Limer inn den lille kode snutten om noen kan se hva som er feil import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Test2 { public static void main(String[] args) throws IOException { //Leser inn fil BufferedReader in = new BufferedReader(new FileReader("Datafil")); //Initialiserer variabler String line = ""; int lineCount = 0; int total = 0; int max = Integer.MIN_VALUE; int maxCount = 0; int min = Integer.MAX_VALUE; int minCount = 0; String s = ""; int value; //Oppretter en while løkke for å søke gjennom filen while (line != null){ line = in.readLine(); lineCount++; if(!s.equals("")){ value = Integer.parseInt(s); total += value; if(value > max){ maxCount = 0; max = value; } else if (value == max){ maxCount++; } else if(value < min){ minCount = 0; min = value; } else if(value == min){ minCount++; } else { System.out.println("Linjen var tom"); } }} //Skriver ut resultatene System.out.println("Antall linjer: " + lineCount); System.out.println("Sum: " + total); System.out.println("Største tallet: " + max + " Antall ganger: " + maxCount); System.out.println("Minste tallet: " + min + " Antall ganger: " + minCount); } } Lenke til kommentar
OMGLOLWIN2K Skrevet 16. november 2005 Del Skrevet 16. november 2005 [snip] String s = ""; if(!s.equals("")){ } [snip] Jeg innrømmer det ærlig, jeg er dritings, så jeg er sannsyligvis på villspor, men jeg mener fremdeles at feilen ligger der. Ikke at det kan forklare resultatene, selvsagt, men jeg har et vagt håp om at dette kan hjelpe deg på vei. Hvem enn som leser dette, vær så snill og korrigér meg, for jeg er dømt til å ha oversett noe og dermed ta feil. Lenke til kommentar
minc Skrevet 16. november 2005 Del Skrevet 16. november 2005 Kanskje en ide og bruke StringTokenizer. Er s variabelen din som ikke blir annet en space. Husk å importer java.util.StringTokenizer Skriv dette inn i løkken //må være her for at filen kan være tom. Kanskje do-while er bedre. if(line!=null){ st = new StringTokenizer(line); for(int i=0;i<=st.countTokens();i++){ s = st.nextToken(); value = Integer.parseInt(s); Lenke til kommentar
eXeCuter_ Skrevet 16. november 2005 Forfatter Del Skrevet 16. november 2005 //må være her for at filen kan være tom. Kanskje do-while er bedre. if(line!=null){ st = new StringTokenizer(line); for(int i=0;i<=st.countTokens();i++){ s = st.nextToken(); value = Integer.parseInt(s); Forstår ikke helt hvor du mener jeg skal skrive dette inn i while løkken. Får det iallefall ikke til uten en drøss med feilmeldinger. Lenke til kommentar
minc Skrevet 16. november 2005 Del Skrevet 16. november 2005 StringTokenizer st; //Oppretter en while løkke for å søke gjennom filen while (line != null){ line = in.readLine(); lineCount++; //må være her for at filen kan være tom. Kanskje do-while er bedre. if(line!=null){ st = new StringTokenizer(line); for(int i=0;i<=st.countTokens();i++){ s = st.nextToken(); value = Integer.parseInt(s); total += value; if(value > max){ lykke til med innleveringa 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å