亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于本任務的另一種實現方法

public class HelloWorld {
???
??? //完成 main 方法
??? public static void main(String[] args) {
??????? int[] scores={89,-23,64,91,119,52,73};
??????? HelloWorld hello=new HelloWorld();
??????? System.out.println("考試成績的前三名為:");
??????? hello.get123(scores);
??????? }
???
??? //定義方法完成成績排序并輸出前三名的功能
??? public void get123(int[] scores){
??????? int max1=scores[0];
??????? int max2=scores[0];
??????? int max3=scores[0];
??????? for(int i=0;i<scores.length;i++){
??????????? if(scores[i]>0&&scores[i]<100){
??????????????? if(max1<scores[i]){
??????????????????? max1=scores[i];
??????????????? }
??????????????
??????????? }
??????? }
??????? for(int j=0;j<scores.length;j++){
??????????? if(scores[j]>0&&scores[j]<100){
??????????????? if(scores[j]>max2&&scores[j]<max1){
??????????????????? max2=scores[j];
??????????????? }
??????????? }
??????? }
??????? for(int k=0;k<scores.length;k++){
??????????? if(scores[k]>0&&scores[k]<100){
??????????????? if(scores[k]>max3&&scores[k]<max2){
??????????????????? max3=scores[k];
??????????????? }
??????????? }
??????? }
??????? System.out.println(max1);
??????? System.out.println(max2);
??????? System.out.println(max3);
??? }
???為什么這個代碼執行出來結果是這樣,第三名成績怎么出不來

考試成績的前三名為:
91
89
89

正在回答

1 回答

? ? ? ? int max1=scores[0];
??????? int max2=scores[0];
??????? int max3=scores[0];

你這里賦值就直接三個變量全是89了,我的親。后面兩個循環的里面的條件判斷語句

?if(scores[j]>max2&&scores[j]<max1){

if(scores[k]>max3&&scores[k]<max2){

這兩個條件都為假,里面的賦值語句都沒執行過。

0 回復 有任何疑惑可以回復我~
#1

慕碼人8367464 提問者

也就是說,scores[0]最開始是等于max2的,第一次循環時判斷條件不滿足,循環就不會繼續執行下去了吧?我在后面加上else{continue;}可以嗎?這樣是否會陷入死循環?
2016-12-28 回復 有任何疑惑可以回復我~
#2

Mikkey1984

不是循環進不了,循環都能進,但是里面那兩層判斷過不去。再說了,優化的代碼那么多,為什么還堅持這么繞的代碼?。?/div>
2016-12-28 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第一季(IDEA工具)升級版
  • 參與學習       1167538    人
  • 解答問題       18748    個

0基礎萌新入門第一課,從Java環境搭建、工具使用、基礎語法開始

進入課程

關于本任務的另一種實現方法

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號