comtrumuke
2015-06-06 03:58
int i=0;
for(int a:arr){
i+=((100>=a)&&(0<=a))?1:0;
}
i为什么会是5?
全部代码:
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
HelloWorld hello=new HelloWorld();
hello.Top3(scores);
}
//成绩数组必须是全局变量,否则HelloWorld类无法调用
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("成绩排名是:"+Arrays.toString(arr));
// System.out.print("有效成绩有"+i+"个,包括:");
/* 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]);
}
}
}
i+=((100>=a)&&(0<=a))?1:0;
这行代码中用到了条件运算符,条件运算符的语法如下:
条件运算符( ? : )也称为 “三元运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值
由此可以看出((100>=a)&&(0<=a))就是布尔表达式,即a在0到100的范围内就返回true,然后i+1
那个成绩数组里一眼就可以看出只有五个成绩满足0-100这个条件,所以最后i=5
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
HelloWorld hello=new HelloWorld();
hello.Top3(scores);
}
//成绩数组必须是全局变量,否则HelloWorld类无法调用
// 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("成绩排名是:"+Arrays.toString(arr));
int length=arr.length-1;
for(;length>=0;length--){
if((100>=arr[length])&&(0<=arr[length]))
break;
}
System.out.print("有效成绩有"+i+"个,包括:");
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)+"个有效成绩");
break;
}
System.out.println(arr[length--]
);
}
}
}
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题