【问题标题】:Output of two if statements两个 if 语句的输出
【发布时间】:2014-06-12 08:20:10
【问题描述】:

为什么下面会输出“Resting”和“Studying”?不应该只是“学习”吗?

    boolean isSleeping = false;
    boolean isStudying = true;
    if (isSleeping)
        System.out.println(" Sleeping ");
        System.out.println(" Resting ");
    if (isStudying)
        System.out.println(" Studying ");

【问题讨论】:

  • 因为System.out.println(" Resting "); 不在第一个 if 语句中。
  • 大括号定义块的范围..
  • 这是never use braceless-ifs的一个很好的理由
  • @Jongware 那么他不会使用“;”在行尾,他会写if isSleeping":" :D:D:D

标签: java if-statement output


【解决方案1】:

基本上,因为您没有在{...} 之间包含第一个 if 语句内容,所以它基本上是在说...

if (isSleeping)
    System.out.println(" Sleeping ");

System.out.println(" Resting ");

if (isStudying)
    System.out.println(" Studying ");

相反,尝试使用...

if (isSleeping) {
    System.out.println(" Sleeping ");
    System.out.println(" Resting ");
}
if (isStudying) {
    System.out.println(" Studying "); 
}

这是鼓励在条件语句周围使用大括号的原因之一

【讨论】:

    【解决方案2】:
    if (isSleeping)
        System.out.println(" Sleeping "); // your if condition's scope ends here
        System.out.println(" Resting ");// always printed
    if (isStudying)
        System.out.println(" Studying "); // your second if condition's scope ends here
    

    【讨论】:

      【解决方案3】:

      如果您希望针对该条件执行更多语句,请在 if 语句后添加花括号。

      boolean isSleeping = false;
          boolean isStudying = true;
          if (isSleeping){
              System.out.println(" Sleeping ");
              System.out.println(" Resting ");
          }
          if (isStudying)
              System.out.println(" Studying ");
      

      【讨论】:

        【解决方案4】:

        您的 if 语句不使用 {...}。因此,它会从您的if 中考虑第二行。

        试试这个:

        boolean isSleeping = false;
        boolean isStudying = true;
        if (isSleeping) {                         // the following code between brackets will be executed.
            System.out.println(" Sleeping ");
            System.out.println(" Resting ");
        }
        if (isStudying)
            System.out.println(" Studying ");     // Without bracket, it executes only the line until the semi-colon.
        

        【讨论】:

          【解决方案5】:

          阅读什么是作用域:SCOPE

          没有{}if 语句的作用域是条件之后的第一行代码..

          但是,如果您只想打印睡眠,您必须这样做:

              boolean isSleeping = false;
              boolean isStudying = true;
          
              if (isSleeping){
                  System.out.println(" Sleeping ");
              }
          
                  System.out.println(" Resting ");
          
              if (isStudying){
                  System.out.println(" Studying ");
              }
          

          【讨论】:

            【解决方案6】:
            if(true)
            line 1
            line 2
            

            if 语句上方没有括号 {}..这意味着 if 语句仅适用于 if 语句之后的行(第 1 行)..

            但是

            if(true)
            {
            line 1
            line 2
            }
            

            上面带括号的 if 语句在整个括号内都是 al=pplicable..这适用于第 1 行和第 2 行..

            在你的情况下

            if (isSleeping)
                System.out.println(" Sleeping ");
                System.out.println(" Resting ");
            

            此 IF 语句仅适用于第一行“Sleepinfg”..所以“Resting”没有任何 IF 语句..所以“Resting”将始终在输出文件中

            你的代码应该是这样的..

            boolean isSleeping = false;
            boolean isStudying = true;
            if (isSleeping)
            {
                System.out.println(" Sleeping ");
                System.out.println(" Resting ");
            } 
            if (isStudying)
            {
               System.out.println(" Studying ");
            }
            

            【讨论】:

              【解决方案7】:

              如果要执行两条语句,请使用{ }

              像这样:

              if (isSleeping) {
                  System.out.println(" Sleeping ");
                  System.out.println(" Resting ");
              }
              else if (isStudying) {
                  System.out.println(" Studying ");
              }
              

              我还编辑并添加了else,因为象征性地有人在睡觉或休息没有在学习。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-09-25
                • 2019-05-05
                • 2021-09-03
                • 2022-12-08
                相关资源
                最近更新 更多