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

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

請問為什么第三個for循環沒有實現排序,或者說有更好的排序代碼嗎

import?java.util.Arrays;
public?class?HelloWorld?{
????public?static?void?main(String[]?args)?{
????????HelloWorld?hello?=?new?HelloWorld();
????????int[]?rank?=?{89,?-23,?64,?91,?119,?52,?73};
????????hello.getArrays(rank);
????}//定義方法完成成績排序并輸出前三名的功能
????public?int[]?getArrays(int?[]rank)?{
????????int?max3=rank[0];
????????int?max2=rank[0];
????????int?max1=rank[0];

????????int[]?nums?=?{1,?2,?3};

????????for?(int?i?=?0;?i?<?rank.length-1;?i++)?{
????????????if?(rank[i]?>?1?&&?rank[i]?<?100)?{
???????????????if?(rank[0]?<?rank[i])?{
????????????????max1?=?rank[i];
????????????}
????????}
????????}
????????for?(int?i?=?0;?i?<?rank.length-1;?i++)?{
????????????if?(rank[0]?<rank[i]&&rank[i]<max1)?{
????????????????if?(rank[i]?>?1?&&?rank[i]?<?100)?{
????????????????????max2?=rank[i];
????????????????}
????????????}
????????}
????????for(int?i=1;i<rank.length;i++){
????????????if(rank[i]>rank[i]){
????????????????max3=rank[i];
????????????}
????????}
????????nums[0]=max1;nums[1]=max2;nums[2]=max3;
????????System.out.println(Arrays.toString(nums));
????????return?nums;
????}
}

輸出是91 89 89?

正在回答

3 回答

不需要去給它定義三個初始值,定義一個就夠了

????????int?max3=rank[0];
????????int?max2=rank[0];
????????int?max1=rank[0];
其次?int[]?nums?=?{1,?2,?3};既然只定義了一個初始值來接收,就不需要在創建一個數組了
還有一個很重要的,(rank[i]?>?1?&&?rank[i]?<?100)??&&的意思是必須滿足兩邊的表達式才會被執行,仔細看,有什么數是大于1同時又小于100的,沒有。所以在這里,可以用?||?來運算,||的意思是兩邊表達式只要滿足一邊就行了。

還有很多地方也不對,但是我懶的打字了。

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

寫的這么復雜,如果你想用這種,就先定義一個方法,再定義一個方法調用你前面的那個方法

2 回復 有任何疑惑可以回復我~
int?max3=rank[0];??//rank[0]等于89??max3=89
for(int?i=1;i<rank.length;i++){
?????????//相同數比較???????
????if(rank[i]>rank[i]){
????//沒有進入
????max3=rank[i];
????}
}
max3沒有被重新賦值


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

舉報

0/150
提交
取消

請問為什么第三個for循環沒有實現排序,或者說有更好的排序代碼嗎

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

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

幫助反饋 APP下載

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

公眾號

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