Gå til innhold

BufferReader max og min verdier


Anbefalte innlegg

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
Videoannonse
Annonse
[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

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


       //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. :hmm:

Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...