Java算法题:判断并输出101-200中所有素数,代码中单等号与双等号的区别?

请判断101-200之间有多少个素数,且输出所有的素数。

public class PrimeNumber {
public static void main(String[] args) {
for(int i=101 ; i<=200 ; i++){
boolean flag = true;
for(int j=2 ; j<i ; j++){
if(i%j == 0){
flag = false;
break;
}
}
if(flag == true){ //???
System.out.println(" "+i);
}
}
}
}

//???处:
这里如果写单等号,输出的会是101-200的所有数字;
这里写双等号,得到的就是101-200的所有质数;
然而上面flag=false处,写的就是单等号,为什么这两处符号要不一致?
谢谢!!!!!!

第1个回答  2019-05-11
这是很基础的问题
单= 是赋值运算, 把后面的值赋值给前面的参数
双= 是关系运算, 比较前后两个参数是否相同

注意如果???处, 用单等, 就是赋值运算, 将ture 赋值 给 flag, 所以if中会一直是true, 也会一直执行if中的代码
双== 就是比较了啊, 结果是真 才会执行if中代码
第2个回答  2019-05-11
单等号的意思是赋值,双等号的意思是判断两个变量的值是否相等,相等返回true,不相等返回false。在你的问好的那一行,如果你写为了flag=true,表示将true赋值给flag这个变量,因此if判断一直都是true,也就是会一直指向下面的语句。
第3个回答  2019-05-11
有区别,而且区别很大。根本不是一个东西,单等号是做赋值操作,双等号是逻辑运算符是否等于。
flag=true是让这个flag等于true。
flag==true是判断这个flag是否等于true。

建议题主先看看基础语法。本回答被提问者采纳
相似回答