Java: проблема вычисления среднего из текстового файла - PullRequest
0 голосов
/ 25 марта 2019

Привет всем, первый пост здесь! В настоящее время у меня есть некоторые проблемы с моим readfromfile (), чтобы вычислить среднее значение. Моя проблема в том, что он печатает десять чисел, «слипшихся» как 12345678910 Я не понимаю, как я могу рассчитать среднее значение, как я попытался токен / 10, и он возвращает 0000000000

какие-нибудь предложения, получающие среднее из этого беспорядка?

Я попытался вернуть токен с% n% s, который выглядит лучше, но все же, когда я делю на 10, это не дает мне правильное число, что я делаю неправильно

package average;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Formatter;
import java.util.InputMismatchException;
import java.util.Scanner;

public class average {

    private static Formatter output;
    private static Scanner input;

    public static void main(String[] args) {

        openFileWrite();
        writeToFile();
        closeFile();
        openFileRead();
        readFromFile();
        closeFileRead();
    }

    public static void openFileRead() {      // gets file for "read"
        try {
            input = new Scanner(Paths.get("Numbers.txt"));
        } catch (IOException e) {
            System.out.println("Unable to read file");
        }
    }

    public static void openFileWrite() {     // gets file for "write"
        try {
            output = new Formatter("Numbers.txt");
        } catch (FileNotFoundException e) {
            System.out.println("Unable to open file");
        }

    }

    public static void readFromFile() {

        while (input.hasNextInt()) {

            int token = input.nextInt();

            System.out.print(token);

        }
    }

    public static void writeToFile() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter 10 numbers");
        try {
            for (int i = 0; i < 10; i++) {

                System.out.println("Another Number Please");
                int total = input.nextInt();
                output.format("%s%n", total);
            }
        } catch (InputMismatchException e) {
            System.out.println("Please do not enter any letters");
            writeToFile();

        }
    }

    //required to close file for write
    public static void closeFile() {
        output.close();
    }

    //required to close file for read
    public static void closeFileRead() {
        input.close();
    }
}

1 Ответ

0 голосов
/ 25 марта 2019

Просто измените ваш метод readFromFile следующим образом: -

public static void readFromFile() {
        double average = 0;
        while (input.hasNextInt()) {
            int token = input.nextInt();
            average+=token;
        }
        System.out.println("Average ="+average/10);
}
...