逻辑 - Java 编程 do-while 循环

Logic - Java programming do-while loops

因此,当您在 Java 中编写代码并执行 do-while 循环时,当有多个条件打破循环时,您必须使用 && (和)而不是 || (要么)。我知道 && 会打破循环。

在这个例子中,输入1、2、3或4打破了循环,但为什么是&&!??!我的教授无法解释..

import java.util.*;
public class ErrorTrap
{
    public static void main(String[] args)
    {
        System.out.println("Program by --");
        System.out.println();
        System.out.println("Error Traps");
        System.out.println();
        //initialize variables
        Scanner input = new Scanner(System.in);
        char year;

        //user input
            do {
                System.out.print("Please input a 1, 2, 3 or 4:  ");
                year = input.nextLine().charAt(0);

                //output
                System.out.println(num);
                System.out.println();
                }
                while(year != '1' && year != '2' && year != '3' && year != '4');          
    }//end main
}//end ErrorTrap

假设用户输入 5

让我们检查一下结果:

5 != 1 is true
5 != 2 is true
5 != 3 is true
5 != 4 is true

true && true && true && truetrue 所以循环一直循环。

例如,一旦用户输入 3,我们有以下内容:

3 != 1 is true
3 != 2 is true
3 != 3 is false
3 != 4 is true

true && true && false && truefalse 所以我们中断循环。

现在假设您考虑使用 || 并输入 3 :

3 != 1 is true
3 != 2 is true
3 != 3 is false
3 != 4 is true

true || anything 给出 true 因此代码不符合您的规范,因为您想在输入 23 或 [=25= 时中断]


小规则:

如果您使用 || 并且第一个测试是 true,编译器甚至不会费心测试其余的测试,输出将是 true

&& 相同,第一个测试是 false

只要年份不等于“1”和“2”以及“3”和“4”,您在括号内的代码就会被执行。在其他情况下,只要年份值不是其中之一。但是如果您使用 || 而不是 && ,那么代码将一直执行。因为一个条件就够了 year!='1' ,即使 year ='2' 这也会执行代码。

&& is restricted, you should meet all conditions to validate code.
|| is not restricted, you just need to meet one condition of desired
   conditions to validate code.
while(year!='1' && year!='2')

是多个条件的正确语法,因为添加的"&&"让程序知道每个条件都依赖语句中的其他条件,如果有一个为假,则语句中断。 -- 而 "||" 用于 独立 语句。

例如,

String Apple = "Red";

if(Apple.equals("Red")||Apple.equals("Green")){
    return true;
} else {
    return false;
}

if 语句将 return 为真,即使 Apple 不是绿色的,它也会检查一个条件是否为真。

同时

String Apple = "Red";

if(Apple.equals("Red")&&Apple.equals("Green")){
return true;
} else {
return false;
}

无论如何这都会 return 错误,因为这两个条件相互依赖。

希望对您有所帮助!

while(year != '1' && year != '2' && year != '3' && year != '4');

您将在此处使用 && 运算符,因为为了打破此处的循环 "year" 不得为 1 且不得为 2 且不得为 3 且不得是 4。

如果您要使用 OR 运算符 (||),其中一个可能为假,另一个为真,但您的循环仍会继续。

基本上,为了打破循环,您需要 year==1、2、3 和 4 为假。如果使用 &&,它们都必须为假。如果您使用 ||,并非所有这些都必须为假才能中断循环。