或者在一段时间内没有工作

时间:2016-09-11 14:09:36

标签: java while-loop

import java.util.Scanner;

public class test{
public static void main(String [] args){

    Scanner in = new Scanner(System.in);
    int a = 1;
    int b = 1;

    while (a != 0 || b != 0){
        System.out.println("");
        a = in.nextInt();
        b = in.nextInt();

    } 
}
}

我的问题是为什么" a" AND" b"需要0暂时停止? 我能做些什么来修复?我可以创建一个新变量然后:

 if (a = 0){
      //blabla...
 }

但我宁愿不......

3 个答案:

答案 0 :(得分:4)

Java while循环在其条件变为false时停止。根据逻辑规律,否定

a != 0 || b != 0

a == 0 && b == 0

如果你想要一个不同的破坏条件,那就继续添加它。

如果你想要一个好的阅读,请查看Wikipedia article on logical equivalence,除此之外,你还可以找到名为De Morgan's laws的内容,其中包含:{/ p>

¬(p∨q)≡¬p∧¬q

答案 1 :(得分:0)

您目前的状况:

while (a != 0 || b != 0)

等同于@TimBiegeleisen所说:

while(a == 0 && b == 0)

而且,正如你意识到的那样,你不希望如此。修复你的条件:

while(!(a == 0 || b == 0))

因为这是你想要的条件。

您的完整代码应为:

import java.util.Scanner;
public class test{

    public static void main(String []args){
        Scanner in = new Scanner(System.in);
        int a = 1;
        int b = 1;

        while (!(a == 0 || b == 0)){
            System.out.println("");
            a = in.nextInt();
            b = in.nextInt();
        } 
    }
}

答案 2 :(得分:0)

Java while循环将像

一样工作
while(o) means false, means it will not enter inside the loop
while(1) means true, means it will enter inside the loop.

根据这种情况,您可以将表达式传递给while循环。