Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组中读取并计算平均值_Java_Arrays - Fatal编程技术网

Java 从数组中读取并计算平均值

Java 从数组中读取并计算平均值,java,arrays,Java,Arrays,我试图编写代码,从数组中读取一行字符,将字符分配给一个整数,然后对该行的所有整数求平均值,它对数组中的每一行都这样做。以下是我到目前为止的情况: Scanner in = new Scanner(new File("Grades.txt")); while(in.hasNextLine()) { int gp = 0; double gpa = 0; String line = in.nextLine(); if(line.length() == 0) {

我试图编写代码,从数组中读取一行字符,将字符分配给一个整数,然后对该行的所有整数求平均值,它对数组中的每一行都这样做。以下是我到目前为止的情况:

Scanner in = new Scanner(new File("Grades.txt"));

while(in.hasNextLine()) {
    int gp = 0;
    double gpa = 0;
    String line = in.nextLine();

    if(line.length() == 0) {
        continue;
    }

    line = line.substring(line.length()-15, line.length());

    String[] letters = line.split(" ");

    for (int i = 0; i < letters.length; i++) {

    if (letters[i].equals("H")) {
        gp += 7;
    }
    else if (letters[i].equals("D")) {
        gp += 6;
    }
    else if (letters[i].equals("C")) {
        gp += 5;
    }
    else if (letters[i].equals("P")) {
        gp += 4;
    }
    else if (letters[i].equals("F")) {
        gp += 0;
    }
    }

    gpa = gp / letters.length;

    System.out.println(gpa);
}
以下是代码的当前输出:

5.0
6.0
3.0
2.0
3.0
4.0
2.0
文本文件的内容:

45721 Chris Jones D D C P H H C D
87946 Jack Aaron H H H D D H H H
43285 Ben Adams C F C D C C C P
24679 Chuck Doherty F F F P C C C F
57652 Dean Betts F C F C D P D H
67842 Britney Dowling D D F D D F D D
22548 Kennedy Blake P F P F P F P P

我走对了吗?有没有更简单的方法?任何帮助都将不胜感激。

只需一张简短的便条,以避免日后的悲伤

不应该

line = line.substring(line.length()-16, line.length()-1);
取而代之

line = line.substring(line.length()-15, line.length());
为了得到所有的分数


然后,您需要将if语句放入for循环中,循环数组的每个值(将
字母[1]
替换为
字母[i]

判断是否正确的最佳方法也是最简单的:运行代码并检查答案@音乐编码器我的错误,我已经运行了代码并刚刚打印了输出,但它只显示了每行的第一个字母的值。我已经用行长更改和建议的for循环更新了代码。我还添加了输出,但似乎仍然不正确,因为第一行的实际和应该是46。我遗漏了什么吗?其他行输出似乎得到了正确的值。。。第一行是否有错误字符(制表符而不是空格)?编辑:实际上第二行也是错误的,也许检查前两行是否有任何问题,甚至是换行?我正在读取的数组和文本文件似乎在所有行中都是一致的,我将发布文本文件的内容Woop,你正在为初学者删掉最后一个等级,我想需要去掉-1,你最好用-15而不是16或20。啊,是的,谢谢你解决了这个问题,总数都是正确的。我现在已经更新了代码,尝试为每行生成平均值,但输出再次不正确,第一行应为5.75。你能看到任何明显的错误吗?
line = line.substring(line.length()-15, line.length());