繁体   English   中英

为什么我的代码只执行一次

[英]Why does my code only execute once

我想打印所有的偶数,但是只给我0!

public class DataType {

public static void main(String[] args){
    int number=0;
    int max=20;
    do{
        System.out.println("this is an even number"+ number);
        number++;
    }while(number<=max&&EvenNumber(number));

}



public static boolean EvenNumber(int a)
{
    if((a%2)==0)
    {
        return true;
    }else 
        return false;       
}


}

这就是您的条件所陈述的:在两个条件都满足时执行!,第一次执行number ++之后,条件的左侧返回false,循环就完成了!

您的意思是肯定的:

    do {
        if (isEvenNumber(number)) {
            System.out.println("this is an even number" + number);
        }
        number++;
    } while (number <= max);

记住,下面的代码意味着

while(number <= max && EvenNumber(number))

两个条件都满足时...

number++;之后number++; number变为1 ,因此条件变为false ,循环终止。

我想,你想做

do {
    if (isEvenNumber(number)) System.out.println(number);
    number++;
} while(number<=max);

因为在您的代码中,如果number等于1,而条件为false

如果您打算查找[0, 20]之间的所有偶数[0, 20]可以将代码更改为以下版本:

public static void main(String[] args) {
    int max=20;
    for (int number = 0; number <= max; number++) {
        if (number % 2 == 0) {
            System.out.printf("%d is an even number.\n", number);
        }
    }
}

内容如下:

  • 从0开始
  • 而数字不超过20
  • 如果数字甚至打印出来
  • 继续下一个号码

因为在第二次迭代中,循环将退出。 如果要打印偶数,则代码应为

do{
    if(EvenNumber(number)) {
        System.out.println("this is an even number"+ number);
    }
    number++;
}while(number<=max );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM