Java 对数组使用if语句
在注释步骤4中,我尝试将当前数组元素添加到sum中,将当前数组元素与max_test进行比较,如果它更大,则将其保存在变量max_test中。并将当前元素与min_测试进行比较,如果较小,则将其保存在min_测试中。然而,我不断地得到错误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])
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];