我的講師給了我這些問(wèn)題:1. 編寫(xiě)一個(gè)程序來(lái)執(zhí)行以下操作:a. 從用戶 (n)b獲取學(xué)生人數(shù)。要求用戶輸入 n 個(gè)學(xué)生的 n 個(gè)成績(jī),將它們存儲(chǔ)在一個(gè)數(shù)組中。C。打印出這 n 個(gè)等級(jí)的最大值、最小值和平均值。注意:編寫(xiě)3個(gè)方法來(lái)返回?cái)?shù)組的最大/最小/平均元素并在本程序中使用它們。我嘗試這樣做,但我的程序的輸出不符合我的預(yù)期。這是我的代碼: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:是的,我不知道為什么我的最高等級(jí)和最低等級(jí)是 0.0。哪位大俠幫幫我,謝謝?。?!
2 回答

qq_笑_17
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
在計(jì)算最大值的函數(shù)中,您應(yīng)該使用:
if (max < x[i]) { max = x[i];}
因?yàn)槟阆敕祷卦囟皇撬乃饕4送?,您可能希?code>grades在 while 循環(huán)之前聲明您的數(shù)組,否則它會(huì)在每次迭代時(shí)創(chuàng)建一個(gè)新數(shù)組。
為了提高代碼性能:
1.你可以在你的 max/min 函數(shù)中,一旦遇到 value=0 就退出循環(huán)。在您當(dāng)前的代碼中,即使只有一個(gè)條目,循環(huán)也會(huì)迭代 5000 次。
2.在你的min
函數(shù)中,double min = max(y);
你應(yīng)該使用double min = Double.MAX_VALUE;
. 它將防止不必要的max
函數(shù)調(diào)用。
添加回答
舉報(bào)
0/150
提交
取消