Mam plik o nazwie Numbers.txt z następującą zawartością:

8.5

83.45, 90.2

120.00, 11.05

190.00

Napisałem kod, który używa zawartości pliku do obliczenia sumy i średniej liczb w pliku, jednak kiedy uruchamiam kod, średni wynik to "NaN"

KOD:

package lab13;

import java.util.Scanner; 

import java.io.*;

public class problem1 {

    public static void main(String[] args) throws IOException
    {   

        double sum = 0;     
        int count = 0;
        double num,total = 0;
        double average = total/count;


        File file = new File("Numbers.txt");
        Scanner scan = new Scanner(file);


        while (scan.hasNext())
        {
            double number = scan.nextDouble();

            sum = sum + number;
        }  

        while (scan.hasNextDouble())
        {
            num = scan.nextDouble();
            System.out.println(num);
            count++;
            total += num;

        }

        scan.close();

        System.out.println("The sum of the numbers in " +
                "Numbers.txt is " + sum );       

        System.out.println("The average of the numbers in " +
                "Numbers.txt is " + average );  


    }
}

Wynik:

Suma liczb w pliku Numbers.txt wynosi 503,2

Średnia liczb w pliku Numbers.txt to NaN

0
cscscs 21 listopad 2019, 07:26
1
double average = total/count; - Dzielisz 0 przez 0.
 – 
Jacob G.
21 listopad 2019, 07:31

1 odpowiedź

Musisz zrobić

double average = total/count;

po masz wartości total i count

Ale też to zauważ

Kiedy while (scan.hasNext()) strumień zostanie wyczerpany, wtedy while (scan.hasNextDouble()) również zostanie wyczerpany

Można to przezwyciężyć, ale wystarczy tylko raz zapętlić

2
Scary Wombat 21 listopad 2019, 07:30