我的讲师给了我这些问题:1. 编写一个程序来执行以下操作:a. 从用户 (n)b获取学生人数。要求用户输入 n 个学生的 n 个成绩,将它们存储在一个数组中。C。打印出这 n 个等级的最大值、最小值和平均值。注意:编写3个方法来返回数组的最大/最小/平均元素并在本程序中使用它们。我尝试这样做,但我的程序的输出不符合我的预期。这是我的代码:package javaapplication2;import java.util.*;public class JavaApplication2 { public static double max(double[]x) { int i = 0; int max=0; for (i=0; i < x.length; i++) { if (max < x[i]) { max = i; } } return max; } public static double min(double[]y) { double min = max(y); for (int i =0; i < y.length; i++) { if (y[i] < min) { min = y[i]; } }return min; } public static void main(String[] args) { String name =""; String choice; int times =0; double score; Scanner input = new Scanner(System.in); System.out.println("Enter student's name: "); name = input.nextLine(); while (name != "exit") { double grades [] = new double [5000]; System.out.println("Enter student's score: "); score = Double.parseDouble(input.nextLine()); grades[times] = score; times += 1; System.out.println("The max grade is: " + max(grades)); System.out.println("The min grades is: " + min(grades)); System.out.println("Enter student's name: "); name = input.nextLine(); } }}这是我的输出:Enter student's name: kEnter student's score:30The max grade is: 0.0The min grades is: 0.0Enter student's name:是的,我不知道为什么我的最高等级和最低等级是 0.0。哪位大侠帮帮我,谢谢!!!
2 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
在计算最大值的函数中,您应该使用:
if (max < x[i]) { max = x[i];}
因为你想返回元素而不是它的索引。此外,您可能希望grades
在 while 循环之前声明您的数组,否则它会在每次迭代时创建一个新数组。
为了提高代码性能:
1.你可以在你的 max/min 函数中,一旦遇到 value=0 就退出循环。在您当前的代码中,即使只有一个条目,循环也会迭代 5000 次。
2.在你的min
函数中,double min = max(y);
你应该使用double min = Double.MAX_VALUE;
. 它将防止不必要的max
函数调用。
添加回答
举报
0/150
提交
取消