【问题标题】:Logic - Java programming do-while loops逻辑 - Java 编程 do-while 循环
【发布时间】:2015-12-21 04:38:51
【问题描述】:

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

在本例中,输入 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

【问题讨论】:

  • && 意味着所有条件都必须为真才能继续执行,|| 意味着只有一个条件就足以让执行继续。
  • 如果你的教授不能解释这个,也许你应该考虑换教授...

标签: java logic do-while explain


【解决方案1】:

只要 year 不等于 '1' 和 '2' 和 '3' 和 '4' ,你的 do 括号内的代码就会被执行。换句话说,只要 year 值不是其中之一。但是如果您使用 || 而不是 && ,那么代码将一直执行。因为一个条件就足够 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.

【讨论】:

    【解决方案2】:

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

    您将在此处使用&& 运算符,因为为了在此处中断循环,“年份”不得为 1 且不得为 2 且不得为 3 且不得为 4。

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

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

    【讨论】:

      【解决方案3】:
      while(year!='1' && year!='2')
      

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

      例如,

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

      if 语句将返回 true,即使 Apple 不是 Green,它也会检查一个条件是否为 true。

      虽然

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

      无论如何这都会返回 false,因为这两个条件是相互依赖的。

      希望这有帮助!

      【讨论】:

        【解决方案4】:

        假设用户输入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,因此代码不符合您的规范,因为您想在输入234 时中断


        小规则:

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

        && 也是如此,第一个测试是 false

        【讨论】:

          猜你喜欢
          • 2020-11-26
          • 2014-04-26
          • 1970-01-01
          • 1970-01-01
          • 2019-01-08
          • 1970-01-01
          • 1970-01-01
          • 2015-12-17
          • 2015-09-08
          相关资源
          最近更新 更多