猿问

代码&&和||的区别到底是什么,下面的代码为什么不能正确筛选0-100的成绩?

package imoocjava8_1;

import java.util.Arrays;

public class helloWorld {

public static void main(String[] args){

int[] scores ={89,-23,64,119,52,73};//成绩数组

helloWorld big3 = new helloWorld();//创建新的对象并命名为big3

    big3.showtop(scores);//调用方法“showtop3”,并导入成绩数组

    }

/*

 * 功能:输出考试成绩的前三名,定义一个整型参数数组的方法,用来传入成绩数组

 */

public void showtop(int[] scores){

Arrays.sort(scores);//使用Arrays.sort()方法实现数组的排序

int num=0;//保存有效成绩的数量

for(int i=scores.length-1;i>=0;i--){//倒序遍历数组中的每一个分数

if(scores[i]<=0&&scores[i]>=100){//判断成绩的有效性

continue;//如果成绩无效,则跳出本次循环,忽略此成绩

}

num++;//有效成绩数+1

if(num>3){//判断有效成绩的数量

break;//如果成绩大于3,则结束循环,准备输出成绩的前三名

}

System.out.println("成绩排名前三的是:"+scores[i]);

}

}

}

运行结果如下:

成绩排名前三的是:119

成绩排名前三的是:89

成绩排名前三的是:73

恶化石头
浏览 2055回答 5
5回答

明漠君

所以if(scores[i]<=0&&scores[i]>=100){//判断成绩的有效性是不对的,一个数字不可能既小于零又大于一百,应该用或。

漠然的笑

你的这句 if(scores[i]<=0&&scores[i]>=100){//判断成绩的有效性   这个判断条件有问题,永远不会走到,而且所有数都满足正常需求,哪里有数字同时<0并且又>100的啊,这里逻辑错了应该用||   。   &&:表示逻辑与,表示前后2个条件必须同时满足才可以执行判断中的语句,||表示逻辑或,只要有一个判断条件满足就可以执行。同时注意&&的短路现象,就是第一个条件不满足,后面不用看了,肯定走不到这块判断逻辑。还要学会  & 与 | 的位运算。

明漠君

&&是与,||是或。可以理解为 (小张是学生)&&(小张是女孩)→→→→小张是女学生;(小张是学生)||(小李是学生)→→→→小张和小李中至少有一个满足“是学生”。
随时随地看视频慕课网APP

相关分类

Java
我要回答