Java:在输出文件中获取零

标签 java multidimensional-array

编辑:感谢 Tim Biegeleisen,我通过在下面评论的行中添加 if(scan.hasNextInt()) 修复了原始异常错误。但输出文件给了我零而不是预期的结果。

我知道我的代码非常业余,但请耐心等待,因为我仍然只是一个初学者。预先非常感谢您!

编辑2: 它从中获取输入的文本文件的结构如下:

50 50 50 50 50 50
65 73 45 98 90 76
33 90 75 34 42 55
56 86 88 99 23 97
65 78 79 98 70 87
50 50 50 50 50 50
65 73 45 98 90 76
33 90 75 34 42 55
56 86 88 99 23 97
65 78 79 98 70 87
50 50 50 50 50 50
65 73 45 98 90 76
33 90 75 34 42 55
56 86 88 99 23 97
65 78 79 98 70 87
50 50 50 50 50 50
65 73 45 98 90 76
33 90 75 34 42 55
56 86 88 99 23 97
65 78 79 98 70 87
50 50 50 50 50 50
65 73 45 98 90 76
33 90 75 34 42 55
56 86 88 99 23 97
65 78 79 98 70 87
50 50 50 50 50 50
65 73 45 98 90 76
33 90 75 34 42 55
56 86 88 99 23 97
65 78 79 98 70 87

EDIT3:问题似乎在于,由于某种原因,它一开始就没有超出 if 范围。

最佳答案

当扫描仪不再有(在本例中)要读取的 int 时,会引发 NoSuchElementException。

我不知道您的 .txt 文件的结构,因此如果您可以将其添加到您的问题中,那就太好了。

解决方案可能是通过执行以下操作来重置扫描仪的偏移:

scan.close();
scan = new Scanner(f);
for (int i = 0; i < 30; i++) {
    for (int j = 0; j < 6; j++) {
        subjects[i][j] = scan.nextInt();
    }
}

编辑:

这段代码对我有用:

public static void main(String[] args) throws Exception {
    Scanner scan = new Scanner(new FileInputStream(new File("file.txt")));
    PrintWriter p = new PrintWriter("Class_report.txt");
    int x = 0, num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0, num6 = 0;
    double avg1 = 0, avg2 = 0, avg3 = 0, avg4 = 0, avg5 = 0, avg6 = 0;
    int[] total = new int[30];
    int[] number = new int[6];
    int[][] subjects = new int[30][6];
    double[] average = new double[6];
    for (int i = 0; i < 30; i++) {
        for (int j = 0; j < 6; j++) {
            x = x + scan.nextInt();
        }
        total[i] = x;
        x = 0;
    }

    scan = new Scanner(new FileInputStream(new File("file.txt")));
    for (int i = 0; i < 30; i++) { //Exception starts appearing from this line.
        for (int j = 0; j < 6; j++) {
            subjects[i][j] = scan.nextInt();
        }
    }
    for (int i = 0; i < 30; i++) {
        avg1 = avg1 + (double) subjects[i][0];
        avg2 = avg2 + (double) subjects[i][1];
        avg3 = avg3 + (double) subjects[i][2];
        avg4 = avg4 + (double) subjects[i][3];
        avg5 = avg5 + (double) subjects[i][4];
        avg6 = avg6 + (double) subjects[i][5];
    }
    average[0] = avg1 / 30;
    average[1] = avg2 / 30;
    average[2] = avg3 / 30;
    average[3] = avg4 / 30;
    average[4] = avg5 / 30;
    average[5] = avg6 / 30;
    for (int i = 0; i < 30; i++) {
        if (subjects[i][0] >= 50) {
            num1++;
        }
        if (subjects[i][1] >= 50) {
            num2++;
        }
        if (subjects[i][2] >= 50) {
            num3++;
        }
        if (subjects[i][3] >= 50) {
            num4++;
        }
        if (subjects[i][4] >= 50) {
            num5++;
        }
        if (subjects[i][5] >= 50) {
            num6++;
        }
    }
    number[0] = num1;
    number[1] = num2;
    number[2] = num3;
    number[3] = num4;
    number[4] = num5;
    number[5] = num6;
    scan = new Scanner(new FileInputStream(new File("file.txt")));
    for (int i = 0; i < 30; i++) {
        for (int j = 0; j < 6; j++) {
            x = x + scan.nextInt();
        }
        total[i] = x;
        x = 0;
    }
    for (int i = 0; i < 30; i++) {
        p.println("Total score of student #" + (i + 1) + ": " + total[i]);
    }
    for (int i = 0; i < 6; i++) {
        p.println("Number of passing student in subject#" + (i + 1) + ": " + number[i]);
    }
    for (int i = 0; i < 6; i++) {
        p.println("Average score in subject#" + (i + 1) + ": " + average[i]);
    }
    p.close();
}

正如我所说,我只是通过创建扫描仪的新实例来重置扫描仪的指针。只需将“file.txt”替换为您的文件路径即可。

关于Java:在输出文件中获取零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202497/

相关文章:

java - 使用时从 ArrayList 中删除元素

c - 尝试打印存储在二维数组中的字符

java - 创建一个二维数组并将每个元素初始化为 i * j 的值,其中 i 和 j 是 2 个索引(例如,元素 [5][3] 为 5 * 3 = 15)

java - 从用户生成的多维数组输出数据

c - 在 C 中 malloc'ing 多维数组

Java:海量数据的多线程:线程间共享数据?

java - 如何使这个 jtable 可滚动

java - 如何更改 CouchDB 数据库中所有文档的结构?

java - SwingWorker 未完成

php - Mysql结果转换成二维数组php