首页 > 解决方案 > 如何跟踪三列Java中每一列的总和

问题描述

我的问题是如何让我的程序分别添加每一列,然后找到平均值。例如 33+42+11 /3 用 Ja​​va 表示。

希望能澄清这个问题。

我还链接了下面的数字和列

import java.util.Arrays;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;

public class Assignment
{
public static void main(String[] args) 
throws IOException
{
    
FileInputStream control = null;
Scanner scanner = null;  

if (args.length == 0) {
    System.out.println("file name expected");
    System.exit(0);
}
    
System.out.println("Opening file " + args[0]);
control = new FileInputStream(args[0]);
System.out.println("Opening of file " + args[0] + " successful");

scanner = new Scanner(control);

long sum = 0;
int count = 0;

if (!scanner.hasNext()) {
    System.out.println("No integers");
    System.exit(0);
}

while (scanner.hasNext()) {
    long number = scanner.nextInt();
    sum += number; 
    count++;
}

long average = sum / count;

System.out.println(average);

control.close();

  }
}

这是列。不太确定如何让它从 127 开始添加到 10 和其他两列相同

 127          33  22
 2147483647   42  59
 10           11  55

标签: java

解决方案


我想我能够解释这个问题。

这是一个可行的解决方案 - 请注意,您需要使用一个扫描仪一次扫描一行,然后扫描这些行中的每一行以将其分成几列。然后我将这些总和和计数中的每一个存储在一个数组中,正如你提到的你想使用数组。但是,我只是让这些数组最多容纳 10 个计数,并且没有对这些数组进行任何大小检查——这些类型的问题似乎超出了原始问题的范围。

https://repl.it/repls/TintedNarrowRectangle

import java.util.Scanner;

public class Main {
  public static void main(String[] args){
    String fakeFileInput = " 127          33  22\n2147483647   42  59\n10  11     55";

    Scanner scanner = new Scanner(fakeFileInput);

    if (!scanner.hasNext()) {
        System.out.println("No integers");
        System.exit(0);
    }
    long[] sums = new long[10];
    int[] counts = new int[10];

    while (scanner.hasNextLine()) {
      String line = scanner.nextLine();
      Scanner innerScan = new Scanner(line);
      int current = 0;
      while (innerScan.hasNextInt()) {
        int number = innerScan.nextInt();
        sums[current] += number; 
        counts[current] += 1;
        current++;
      }
    }

    for (int i = 0; i < sums.length; i++) {
      System.out.println((1.0*sums[i])/counts[i] + " average for " + i + " column");
    }
  }
}

推荐阅读