【发布时间】:2016-07-26 00:23:18
【问题描述】:
在注释步骤 4 中,我尝试将当前数组元素相加,将当前数组元素与 max_test 进行比较,如果更大,则将其保存在变量 max_test 中。并将当前元素与 min_test 进行比较,如果它更小,则将其保存在 min_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
代码:
import java.util.Scanner;
public class Grades5
{
public static void main(String[] args)
{
int[][] grades = {
{ 87, 96, 100},
{ 68, 75, 72},
{ 99, 100, 95},
{100, 96, 70},
{ 75, 60, 79},
};
int how_many_grades = grades.length * grades[0].length;
// -----------------
// Output the grades
// -----------------
System.out.print(" ");
for (int i = 0; i < grades[0].length; i++)
System.out.print("Test " + (i + 1) + " ");
System.out.println("Average");
for (int r = 0; r < grades.length; r++)
{
int sum = 0; // Sum of one student's tests
// -------------------
// Process one student
// -------------------
System.out.print("Student " + (r + 1) + " ");
for (int c = 0; c < grades[r].length; c++)
{
System.out.printf("%6d ", grades[r]); // Step 1
//sum += grades[c]; // Step 2
}
System.out.printf("%7.2f\n", (double)sum / grades[r].length);
}
// ----------------
// Output a summary
// ----------------
int max_test, // Maximum test score
min_test, // Minimum test score
sum = 0; // Sum of all student tests
max_test = min_test = grades[0][0]; // Step 3
for (int r = 0; r < grades.length; r++)
{
// -------------------
// Process one student
// -------------------
for (int c = 0; c < grades[r].length; c++)
{
// Step 4
if (grades[r] > grades[max_test])
max_test = c;
if (grades[r] < grades[min_test])
min_test = c;
sum += grades[r];
}
}
System.out.println("Highest test score: " + max_test);
System.out.println("Lowest test score: " + min_test);
System.out.printf("Average test score: %.1f\n",
(double)sum / how_many_grades);
}
}
【问题讨论】:
-
想想
grades[r]和grades[max_test]是什么,以及从您的错误消息中这意味着什么。它说你正在尝试做int[] > int[],本质上是比较两个整数数组,这可能不是你打算做的。 -
应该是grades[r][c],而不是grades[r],因为它是一个二维数组。
-
你不能仅仅因为你得到的答案解决了你原来的问题就改变你的问题。如果您认为自己陷入困境,请接受一个答案并提出另一个问题 - 但请注意,社区并不真正欢迎仅使用调试器就可以避免的问题(至少如果问题是微不足道的)。
标签: java arrays if-statement