Чтение разорванного файла в 2d массив - печать - и поиск среднего числа столбцов

У меня проблемы с чтением всего файла и помещением его в массив. Это продолжает пропускать последние 2 числа в моем текстовом файле. Что я делаю неправильно в моем методе createArr(), который вызывает это. Кроме того, мой метод avgTimeTemp() не производит никакого вывода, кроме первой строки. Я включил содержимое моего текстового файла ниже и вывод.

Содержание текстового файла

98 95 95 102

99 96

99,5 97

100 97,5 97,5

101 98,5 98 101 100 102,5

99,5

99,5 95 96,5 102 97,5

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

public class Temperature2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
            //create scanner and read file
            File input = new File("lab2input2.txt");
            Scanner klg = new Scanner(input);

            //Variable declarations
            double [][] arr = new double [7][];

            System.out.println("Hello! Thank you for saving lives! ");
            System.out.println(" ");
            System.out.println("Please fill in the data for your patient:");
            System.out.println("Patient Name:");
            System.out.println("Date(Reporting week): ");
            System.out.println(" ");
            System.out.println("This Weeks temperature data is incomplete and fragmented... but thats ok! We still have your averages:  ");
            System.out.println("Your Patients Weekly Temperature Record for Time Classes T1 - T6 are as follows:");
            System.out.println("     NOTE: Week starts MONDAY(Day1) and ends SUNDAY(Day7)");
            System.out.println(" ");


            //Method Calls
            createArr(klg, arr);
            printArr(arr);
            avgDailyTemp(arr);
            avgTimeTemp(arr);

            klg.close();
        }   //End of Try
        catch (FileNotFoundException e) {
            System.out.println("The file was not found."); 
        }   
    }   //End of Main

    public static void createArr(Scanner klg, double [][] arr) {
        int i, j;

        for(i = 0; i < arr.length; i++) {
            if(arr.length != 7 && arr != null){
                System.out.print("There is not data for 7 days in the file you inputed. Please check file contents.");  
            }
            arr[i] = new double[i]; //I Feel I have a problem in this line
            for(j = 0; j< arr[i].length; j++) {
                arr[i][j] = klg.nextDouble();
            }
        }
    }
    //Print array (TESTING PURPOSES)
    public static void printArr(double [][] arr) {
        System.out.println("The file contains the following input values: ");       
        for (int i = 0; i< arr.length; i++){
            for(int j = 0; j < arr[i].length; j++) {
                System.out.println(arr[i][j] + " ");    
            }
        }
    }
    //The average temperature of a patient each day from Monday to Sunday
    public static void avgDailyTemp(double [][] arr) {
        double sum, avg;
        System.out.println("Average temperature each day this week: ");
        for(int i = 0; i < arr.length; i++) {
            sum = 0;
            for(int j = 0; j<arr[i].length; j++){
                sum = sum + arr[i][j];
            }
            avg = sum/6;
            System.out.println("Day " + (i+1) + " " + avg);
        }
        System.out.println(" ");
    }
    //NOT WORKING - The average temperature of patient at Time Classes T1-T6
    public static void avgTimeTemp(double [][] arr) {
        double sum; 
        System.out.println("Average temperature for each Time Class: ");

        for (int j = 0; j < arr[j].length; j++){
            double [] avgArr = new double [j];
            sum = 0; 
            for (int i = 0; i < arr.length; i++){ 
                sum = sum + arr[i][j];
            }
            avgArr[j] =sum/7;
            System.out.println("Time Class T" + (j+1) + ": " + avgArr[j]);
        }
        System.out.println(" ");
    }
}   //End of Class

ВЫХОД:

Hello! Thank you for saving lives! 

Please fill in the data for your patient:
Patient Name:
Date(Reporting week): 

This Weeks temperature data is incomplete and fragmented... but thats ok! We still have your averages:  
Your Patients Weekly Temperature Record for Time Classes T1 - T6 are as follows:
     NOTE: Week starts MONDAY(Day1) and ends SUNDAY(Day7)

The file contains the following input values: 

98.0 

95.0 

95.0 

102.0 

99.0 

96.0 

99.5 

97.0 

100.0 

97.5 

97.5 

101.0 

98.5 

98.0 

101.0 

100.0 

102.5 

99.5 

99.5 

95.0 

96.5 

Average temperature each day this week: 

Day 1 0.0

Day 2 16.333333333333332

Day 3 31.666666666666668

Day 4 49.5

Day 5 65.66666666666667

Day 6 82.66666666666667

Day 7 98.83333333333333

Average temperature for each Time Class: 

1 ответ

Решение

Пытаться

public static void createArr(Scanner klg, double [][] arr) {

    int i = 0;


    while (klg.hasNextLine()) {


        String line = klg.nextLine();
        String [] vals = line.split(" "); 

        arr[i] = new double [vals.length];
        int j = 0;

        for (String val : vals) {
            arr[i][j++] = Double.parseDouble(val);
        }

        i++;
    }

}
Другие вопросы по тегам