在评论步骤4中,我尝试将当前数组元素添加到sum,将当前数组元素与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);
}
}
答案 0 :(得分:1)
您无法使用运算符>
来比较int[]
类型。 Java不支持运算符重载。那些关系运算符(>
,<
,>=
,<=
)仅应用于数字基元数据类型。
您的意思是grades[r][c] > grades[r][max_test]
或grades[r][c] < grades[r][min_test]
吗?
答案 1 :(得分:1)
您的问题是grades[r]
不是整数。它是整数的array
。你必须解决两个指数
sum += grades[i][j];
为了摆脱编译错误。
其他错误似乎相同。一般来说,你可以想象如下:
grades[1] -> { 87, 96, 100}
grades[2] -> { 68, 75, 72}
和
grades[1][1] -> 87;
grades[1][2] -> 96;
等..
答案 2 :(得分:1)
如果一个测试的等级在您的阵列中是水平的,那么您只需要两个循环,而不是三个循环。
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);
}
答案 3 :(得分:0)
这是有效的,因为在比较时成绩需要2个部分
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];