从文件中查找输入的平均值

时间:2018-04-10 03:41:30

标签: java

大家好,我似乎遇到了程序问题

示例输入可以如下:

3 1 2 3 

0 1 12

-12

14 1 2 3 

5 1 2 3 4 5 6 

4 10 20 30 40

示例输出必须是: 第1行的平均值为2.0

  

***错误(第2行):行为空 - 无法取平均值

     

***错误(第3行):标头值为0 - 无法取平均值

     

第4行的平均值为12.0

     

***错误(第5行):损坏的行 - 否定标题值

     

***错误(第6行):损坏的行 - 比标题更少的值

     

***错误(第7行):损坏行 - 行上的额外值

     

第8行的平均值为25.0

     

有3条有效的数据线   有5条腐败的数据线

这是我到目前为止所做的:

public class DataChecker
    public static void main(String[] args) throws IOException {
        File myFile = new File("numbers.text");
        Scanner scanner = new Scanner(myFile); 
        int count=0,count2=0,sum=0;
        int[] val = new int[50];
        String line = null;
        while (scanner.hasNextLine()) {              
            line = scanner.nextLine();
            Scanner lineScanner = new Scanner(line); 
            count++;
            while(lineScanner.hasNextInt()){
                lineScanner.nextInt();          
                count2++;

            }

            if(lineScanner.hasNextInt())    
                val[count2] = lineScanner.nextInt();    

            for(int i =0;i<count2;i++) {
                sum += val[i];
                sum = (sum/count2);
                System.out.println(sum);
            }

            System.out.println("There are " + count2 + " numbers on line " + count);
            lineScanner.close();
            count2=0;

        }

        scanner.close();
    } 

我感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

你没有对每一行的数字进行适当的计算。该算法应该是一行读取,使用扫描仪对其进行标记,然后使用整数直到不再存在。跟踪总和和看到的总数,然后取这两个总和的商得到平均值。

// your initialization code
int numLines = 0;

while (scanner.hasNextLine()) {              
    line = scanner.nextLine();
    Scanner lineScanner = new Scanner(line); 
    numLines++;
    int count = 0;
    int total = 0;

    while (lineScanner.hasNextInt()) {
        total += lineScanner.nextInt();
        ++count;
    }

    if (count == 0) {
        System.out.println("Line " + numLines + " has no numbers.");
        continue;
    }

    double avg = 1.0d * total / count;
    System.out.println("The average of the values on line " + numLines + " is " + avg);
    lineScanner.close();
}