使用foreach方法為啥會(huì)有邏輯錯(cuò)誤?
int i=0;
for(int a:arr){
i+=((100>=a)&&(0<=a))?1:0;
}
i為什么會(huì)是5?
全部代碼:
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
HelloWorld hello=new HelloWorld();
hello.Top3(scores);
}
//成績(jī)數(shù)組必須是全局變量,否則HelloWorld類無法調(diào)用
static int scores[]={89 , -23 , 64 , 91 , 119 , 52 , 73};
public void Top3(int[] arr)
{
Arrays.sort(arr);
//統(tǒng)計(jì)有效成績(jī)個(gè)數(shù)
int i=0;
for(int a:arr){
i+=((100>=a)&&(0<=a))?1:0;
}
//輸出成績(jī)信息
// System.out.println("成績(jī)排名是:"+Arrays.toString(arr));
// System.out.print("有效成績(jī)有"+i+"個(gè),包括:");
/* for(;i>0;i--){?
System.out.print(arr[arr.length-i]+",");
}*/
System.out.println("");
System.out.println("考試前三名為:");
for(i=3;i>0;i--){?
System.out.println(arr[arr.length-i]);
}
}
}
2015-06-06
i+=((100>=a)&&(0<=a))?1:0;
這行代碼中用到了條件運(yùn)算符,條件運(yùn)算符的語法如下:
條件運(yùn)算符( ? : )也稱為 “三元運(yùn)算符”。
語法形式:布爾表達(dá)式 ? 表達(dá)式1 :表達(dá)式2
運(yùn)算過程:如果布爾表達(dá)式的值為 true ,則返回 表達(dá)式1 的值,否則返回 表達(dá)式2 的值
由此可以看出((100>=a)&&(0<=a))就是布爾表達(dá)式,即a在0到100的范圍內(nèi)就返回true,然后i+1
那個(gè)成績(jī)數(shù)組里一眼就可以看出只有五個(gè)成績(jī)滿足0-100這個(gè)條件,所以最后i=5
2015-06-06
import java.util.Arrays;
public class HelloWorld {
???
??? //完成 main 方法
??? public static void main(String[] args) {
?????? HelloWorld? hello=new? HelloWorld();
?????? hello.Top3(scores);
???????
???????
??? }
??? //成績(jī)數(shù)組必須是全局變量,否則HelloWorld類無法調(diào)用
//??? static int scores[]={89 , -23 , 64 , 91 , 119 , 52 , 73};
??? static int scores[]={-89 , -23 , 64 , 91 , 119 , -52 , -73};
??? public void Top3(int[] arr)
??? {
??????? Arrays.sort(arr);
??????? int i=0;
??????? for(int a:arr){
??????????? i+=((100>=a)&&(0<=a))?1:0;
??????? }
??????? System.out.println("成績(jī)排名是:"+Arrays.toString(arr));
??????? int length=arr.length-1;
??????? for(;length>=0;length--){???????????
??????? if((100>=arr[length])&&(0<=arr[length]))
??????? break;
??????? }
??????? System.out.print("有效成績(jī)有"+i+"個(gè),包括:");
?
??????? for(int l1=length;i>0;i--){???????????
??????? System.out.print(arr[l1--]+",");
??????? }
??????? System.out.println("");
??????? System.out.println("考試前三名為:");
??????? for(i=3;i>0;i--){
??????? if(arr[length]<0){
??????? System.out.println("只有以上"+(3-i)+"個(gè)有效成績(jī)");
??????? break;
??????? }
??????? System.out.println(arr[length--]
);
?
??????? }
???????????
??? }
}