import?java.util.Arrays;
public?class?HelloWorld?{
????
????//完成?main?方法
????public?static?void?main(String[]?args)?{
????????System.out.println("考試成績的前三名為:");
????????HelloWorld?hello?=?new?HelloWorld();
??????
????????int[]?scores?=?new?int[]{89,-23,64,91,119,52,73};
????????int[]?nums?=?new?int[3];
????????nums?=?hello.sort(scores);
????????
????????
????????
????}
????
????//定義方法完成成績排序并輸出前三名的功能
????public?int[]?sort(int[]?scores){
????????Arrays.sort(scores);
????????int?count?=?0;
????????for(int?i?=?scores.length-1;i>=0;i--){
????????????if(scores[i]<0?||?scores[i]>100){
????????????????continue;
????????????????
????????????}
????????????else?{
????????????????count++;
????????????}
????????????if(count>3){
????????????????break;
????????????}
????????????System.out.println(scores[i]);
????????}
??????return?int[]?nums;
????}? ? 這道題 我想用有返回值的方式去解決,我這樣寫為什么老是報錯???
1 回答
已采納

安浪創想
TA貢獻81條經驗 獲得超23個贊
這個代碼真亂啊啊啊
錯誤分析:函數返回時直接返回數據就行,不需要再定義類型了,只有初始定義時候才需要在變量前加int[]這樣的類型。
而且你的sort函數的返回值應該是 傳入的?scores,而不是前面過程中的nums
代碼如下:
import?java.util.Arrays; public?class?HelloWorld?{ ????//完成?main?方法 ????public?static?void?main(String[]?args)?{ ????????System.out.println("考試成績的前三名為:"); ????????HelloWorld?hello?=?new?HelloWorld(); ????????int[]?scores?=?new?int[]{89,?-23,?64,?91,?119,?52,?73}; ????????int[]?nums?=?new?int[3]; ????????nums?=?hello.sort(scores); ????} ????//定義方法完成成績排序并輸出前三名的功能 ????public?int[]?sort(int[]?scores)?{ ????????Arrays.sort(scores); ????????int?count?=?0; ????????for?(int?i?=?scores.length?-?1;?i?>=?0;?i--)?{ ????????????if?(scores[i]?<?0?||?scores[i]?>?100)?{ ????????????????continue; ????????????}?else?{ ????????????????count++; ????????????} ????????????if?(count?>?3)?{ ????????????????break; ????????????} ????????????System.out.println(scores[i]); ????????} ????????return?scores; ????} }
而你的這個代碼不夠優化:
應該這樣優化:
import?java.util.Arrays; public?class?HelloWorld?{ ????//完成?main?方法 ????public?static?void?main(String[]?args)?{ ????????System.out.println("考試成績的前三名為:"); ????????int[]?scores?=?new?int[]{89,?-23,?64,?91,?119,?52,?73}; ????????int[]?nums?=?new?int[3]; ????????nums?=?sort(scores); ????????for?(int?rank?: ????????????????nums)?{ ????????????System.out.println(rank); ????????} ????} ????//定義方法完成成績排序并輸出前三名的功能 ????static?int[]?sort(int[]?scores)?{ ????????Arrays.sort(scores); ????????int?count?=?0; ????????for?(int?i?=?scores.length?-?1;?i?>=?0;?i--)?{ ????????????if?(scores[i]?<?0?||?scores[i]?>?100)?{ ????????????????continue; ????????????}?else?{ ????????????????count++; ????????????} ????????????if?(count?>?3)?{ ????????????????break; ????????????} //????????????System.out.println(scores[i]);?這里是執行函數體,不要再這進行數據'使用'操作,應該把獲得的數據返回去而不是在這列出來 ????????} ????????return?scores; ????} }
執行結果為:
考試成績的前三名為: -23 52 64 73 89 91 119
你的算法是反的了,sort函數已經從低到高排序,你取最大數據并獲得一個數據數組應該為:
import?java.util.ArrayList; import?java.util.Arrays; public?class?HelloWorld?{ ????//完成?main?方法 ????public?static?void?main(String[]?args)?{ ????????System.out.println("考試成績的前三名為:"); ????????int[]?scores?=?new?int[]{89,?-23,?64,?91,?119,?52,?73}; ????????ArrayList<Integer>?nums?=?new?ArrayList(); ????????nums?=?sort(scores); ????????for?(int?i=1;i<=nums.size();i++){ ????????????System.out.println("第"+i+"名:"+nums.get(i-1)); ????????} ????} ????//定義方法完成成績排序并輸出前三名的功能 ????static?ArrayList<Integer>?sort(int[]?scores)?{ ????????Arrays.sort(scores); ????????int?count?=?0; ????????ArrayList<Integer>?newTopScores?=?new?ArrayList<>(); ????????for?(int?i?=?scores.length?-?1;?i?>=?0;?i--)?{ ????????????if?(scores[i]?<?0?||?scores[i]?>?100)?{ ????????????????continue; ????????????}?else?{ ????????????????count++; ????????????} ????????????if?(count?>?3)?{ ????????????????break; ????????????} //????????????System.out.println(scores[i]);?這里是執行函數體,不要再這進行數據'使用'操作,應該把獲得的數據返回去而不是在這列出來 //????????????把最大的添加到數組里保存起來 ????????????newTopScores.add(scores[i]); ????????} ????????return?newTopScores; ????} }
運行結果為:
考試成績的前三名為: 第1名:91 第2名:89 第3名:73
點擊展開后面3條
添加回答
舉報
0/150
提交
取消