Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不改变布尔值_Java_For Loop_Math - Fatal编程技术网

Java 不改变布尔值

Java 不改变布尔值,java,for-loop,math,Java,For Loop,Math,我有一个测试一个数是否是素数的方法。我用8445测试了这个方法,它不是素数,因为它可以除以3。尽管for循环具有3,正如您在控制台中看到的,但它打印为true。println是我没有拍照的主要方法 public boolean Primzahlerkennen(int i) { boolean bool = true; for (int a = 2; a < i; a ++) { if (i % a == 0) bool = fa

我有一个测试一个数是否是素数的方法。我用8445测试了这个方法,它不是素数,因为它可以除以3。尽管for循环具有3,正如您在控制台中看到的,但它打印为true。println是我没有拍照的主要方法

public boolean Primzahlerkennen(int i) 
{
    boolean bool = true;

    for (int a = 2; a < i; a ++) {
        if (i % a == 0)
            bool = false;
        else
            a++;

        if (a==3){
            System.out.println("here "+a);
            System.out.println(8445%3);
        }
    }

    return bool;
}
public boolean primzahlerkenen(inti)
{
布尔布尔布尔=真;
对于(int a=2;a

尽管
8445%3==0
,但为什么该值没有变为false?

问题是您将
a
增加两次,一次在
for
语句中,一次在循环体本身中

这会导致循环跳过一些除数(其中三个是其中之一)

进一步建议:

  • 为布尔变量指定一个反映其用途的名称(而不是
    bool

  • 您不需要检查除2以外的偶数除数,因为它们都不是素数

  • 您可以在
    sqrt(i)
    处停止循环(找出为什么这是正确的留给读者作为练习)


  • 问题是您将
    a
    增加两次,一次在
    for
    语句中,一次在循环体本身中

    这会导致循环跳过一些除数(其中三个是其中之一)

    进一步建议:

  • 为布尔变量指定一个反映其用途的名称(而不是
    bool

  • 您不需要检查除2以外的偶数除数,因为它们都不是素数

  • 您可以在
    sqrt(i)
    处停止循环(找出为什么这是正确的留给读者作为练习)


  • 请提供方法Source,不要使用图像显示您的代码!把它贴在这里。你效率低下的素数测试函数的问题是
    else a++零件。您已经在循环中增加了
    a
    ,再次增加将导致跳过数字。请提供方法Source不要使用图像显示您的代码!把它贴在这里。你效率低下的素数测试函数的问题是
    else a++零件。您已经在循环中增加了
    a
    ,再次执行此操作将导致跳过数字。感谢您现在使用while循环解决了此问题,以避免两个变量。感谢您现在使用while循环解决了此问题,以避免两个变量,且此问题有效。