Использование split и чтение как целых, так и строк из одной строки в файле, но это ничего не печатает - PullRequest
0 голосов
/ 28 мая 2018

Проблема состоит в том, чтобы прочитать строку и int из текстового файла, разделенного одним пробелом.(например, «3,3 Джек»).Я попытался использовать метод split, и он, похоже, ничего не печатает.Просто новичок!

package com.company;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class Main {

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

        Scanner reader = new Scanner(new File("data.txt"));

        double[] grades = new double[6];
        String[] names = new String[6];
        String s = reader.nextLine();
        String[] split = s.split(" ");

        int sum= 0;
        int counter= 0;
        int avg= 0;
            while(reader.hasNext()) {
                for (int i = 0; i <= grades.length; i++) {
                    grades[i] = Double.valueOf(split[0]);
                    names[i]= split[1];
                    sum+=grades[i];
                    counter++;
                    avg= sum/counter;

                }
                System.out.println(avg);
            }

    }
}

1 Ответ

0 голосов
/ 28 мая 2018

Ошибка возникает, потому что вы проверяете, если "i <= grades.length", измените его на "i <grades.length" и удалите while, например: </p>

Scanner reader = new Scanner(new File("./data.txt"));

    double[] grades = new double[6];
    String[] names = new String[6];
    String s = reader.nextLine();
    String[] split = s.split(" ");

    int sum= 0;
    int counter= 0;
    int avg= 0;
        for (int i = 0; i < grades.length; i++) {
            grades[i] = Double.valueOf(split[0]);
            names[i]= split[1];
            sum+=grades[i];
            counter++;
            avg= sum/counter;            
            System.out.println(avg);
        }

Если выЧтобы прочитать все строки, вы можете сделать это:

Scanner reader = new Scanner(new File("./data.txt"));

    double[] grades = new double[6];
    String[] names = new String[6];        
    String[] split;

    int sum= 0;
    int counter= 0;
    int avg= 0;
        do {
            split = reader.nextLine().split(" ");
            for (int i = 0; i < grades.length; i++) {
                grades[i] = Double.valueOf(split[0]);
                names[i]= split[1];
                sum+=grades[i];
                counter++;
                avg= sum/counter;            
                System.out.println(avg);
            }               
        } while(reader.hasNext());

Вы можете использовать do-while, чтобы сначала выполнить, а после этого проверить, есть ли у вас больше строк.

...