Java 我没有';“我不明白为什么”;如果(数字%i==0)"-&燃气轮机;(条件始终为真)。。。这意味着此方法将始终返回false
[条件始终为true,这意味着该方法将始终返回false][1]Java 我没有';“我不明白为什么”;如果(数字%i==0)"-&燃气轮机;(条件始终为真)。。。这意味着此方法将始终返回false,java,if-statement,Java,If Statement,[条件始终为true,这意味着该方法将始终返回false][1] public class Primenumber { public int number ; public void saisie(){ Scanner sc = new Scanner(System.in); System.out.print("donnez un un entier : "); number = sc.nextInt();
public class Primenumber {
public int number ;
public void saisie(){
Scanner sc = new Scanner(System.in);
System.out.print("donnez un un entier : ");
number = sc.nextInt();
}
public boolean isprime(){
for(int i=1 ; i <= number-1 ; i++ )
if(number%i ==0)
return false;
return true ;
}
} ```
公共类素数{
公共整数;
公共空间{
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“donnez un entier:”);
编号=sc.nextInt();
}
公共布尔isprime(){
对于(int i=1;i在第一个循环中,i
将为1,整数mod 1始终为0。您希望从2开始,而不是从2
开始循环
public boolean isprime(){
if(number < 2)
return false
for(int i=2 ; i <= number-1 ; i++ )
if(number%i ==0)
return false;
return true ;
}
public boolean isprime(){
如果(数字<2)
返回错误
对于(int i=2;i,在此行int i=1
中,您必须将i
的值更改为2
为什么?在第一次运行时,当i=1
时,任何数字mod1
=>0
,因为没有休息
如果将任何数字除以1
,则不会有休息
因此,正确的代码应该是:
public class Primenumber {
public int number ;
public void saisie(){
Scanner sc = new Scanner(System.in);
System.out.print("donnez un un entier : ");
number = sc.nextInt();
}
public boolean isprime(){
for(int i=2 ; i <= number-1 ; i++ )
if(number%i ==0)
return false;
return true ;
}
}
公共类素数{
公共整数;
公共空间{
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“donnez un entier:”);
编号=sc.nextInt();
}
公共布尔isprime(){
对于(int i=2;i输入错误。int i=1
应该是int i=2
,因为任何东西%1
=0
。是的,是的,我忘了用i=2初始化,谢谢