Java 我没有';“我不明白为什么”;如果(数字%i==0)"-&燃气轮机;(条件始终为真)。。。这意味着此方法将始终返回false

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();

[条件始终为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 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
时,任何数字mod
1
=>
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初始化,谢谢