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 对数组使用if语句_Java_Arrays_If Statement - Fatal编程技术网

Java 对数组使用if语句

Java 对数组使用if语句,java,arrays,if-statement,Java,Arrays,If Statement,在注释步骤4中,我尝试将当前数组元素添加到sum中,将当前数组元素与max_test进行比较,如果它更大,则将其保存在变量max_test中。并将当前元素与min_测试进行比较,如果较小,则将其保存在min_测试中。然而,我不断地得到错误 Grades5.java:55: error: bad operand types for binary operator '>' if (grades[r] > grades[max_test])

在注释步骤4中,我尝试将当前数组元素添加到sum中,将当前数组元素与max_test进行比较,如果它更大,则将其保存在变量max_test中。并将当前元素与min_测试进行比较,如果较小,则将其保存在min_测试中。然而,我不断地得到错误

Grades5.java:55: error: bad operand types for binary operator '>'
        if (grades[r] > grades[max_test]) 
                      ^
  first type:  int[]
  second type: int[]

Grades5.java:57: error: bad operand types for binary operator '<'
        if (grades[r] < grades[min_test])
                      ^
  first type:  int[]
  second type: int[]

Grades5.java:59: error: bad operand types for binary operator '+'
           sum += grades[r];
               ^
  first type:  int
  second type: int[]

3 errors
Grades5.java:55:错误:二进制运算符'>'的操作数类型错误
if(等级[r]>等级[max_测试])
^
第一类:int[]
第二种类型:int[]
Grades5.java:57:错误:二进制运算符的级别的操作数类型错误[max_test])
最大试验=c;
if(等级[r]<等级[min_测试])
最小试验=c;
总和+=等级[r];
}
}
System.out.println(“最高测试分数:+max_测试”);
System.out.println(“最低测试分数:+min_测试”);
System.out.printf(“平均测试分数:%.1f\n”,
(双倍)总和/分数);
}
}

您不能使用运算符
来比较
int[]
类型。Java不支持运算符重载。那些关系运算符(
=
grades[r][max\u test]
grades[r][c]

你的问题是
grades[r]
不是整数。它是整数的
数组。你必须处理两个索引

sum += grades[i][j];
为了消除编译错误

其他错误似乎也是如此。一般来说,您可以想象如下:

grades[1] -> { 87,  96, 100}
grades[2] -> { 68,  75,  72}


等等。

如果一个测试的等级在数组中是水平的,那么您只需要两个循环,而不是三个

for (int test = 0; test < grades.length; test++) {
    System.out.print("Test " + (test + 1) + "  ");

    System.out.println("Average");
    int sum = 0; // Sum all grades on this test
    for (int student = 0; student < grades[test].length; student++)
    {
        System.out.print("Student " + (student + 1) + "  ");
        sum += grades[student];  
    }
    System.out.println();
    System.out.printf("%7.2f\n", (double)sum / grades[test].length);
}
for(int test=0;test
这是有效的,因为等级在比较时需要两个部分

    if (grades[r][c] > max_test) 
      max_test = grades[r][c]; 
    if (grades[r][c] < min_test)
      min_test = grades[r][c];
      sum += grades[r][c]; 
if(等级[r][c]>max_测试)
max_检验=等级[r][c];
if(等级[r][c]
想想
grades[r]
grades[max_test]
是什么,以及从错误消息中这意味着什么。它表示您正在尝试执行
int[]>int[]
,本质上比较两个整数数组,这可能不是您想要执行的操作。它应该是grades[r][c],而不是grades r],因为它是一个二维数组。您不能仅仅因为得到的答案修复了原来的问题而简单地更改问题。如果您认为自己陷入困境,请接受答案并提出另一个问题-但请注意,社区并不真正欢迎仅使用调试器就可以避免的问题(至少如果问题很小的话)这会在线程“main”java.lang.ArrayIndexOutOfBoundsException:87的Grades5.main(Grades5.java:55)中产生另一个异常@Brent,您在短时间内询问了两次有关
ArrayIndexOutOfBoundsException
2的问题,我建议您阅读此异常以及如何使用数组。@Brent,我不必为您编写完整的工作代码
for (int test = 0; test < grades.length; test++) {
    System.out.print("Test " + (test + 1) + "  ");

    System.out.println("Average");
    int sum = 0; // Sum all grades on this test
    for (int student = 0; student < grades[test].length; student++)
    {
        System.out.print("Student " + (student + 1) + "  ");
        sum += grades[student];  
    }
    System.out.println();
    System.out.printf("%7.2f\n", (double)sum / grades[test].length);
}
    if (grades[r][c] > max_test) 
      max_test = grades[r][c]; 
    if (grades[r][c] < min_test)
      min_test = grades[r][c];
      sum += grades[r][c];