CodeA为什么不打印42而CodeA打印42?

时间:2017-05-08 17:13:36

标签: java if-statement break

我是初学者。我在Spoj上解决了第一个古典音乐。 但是我写的第一个代码无法解决这个问题,因为输出中包含了42个代码。第二个代码解决了问题,因为它不打印42.但我仍然无法弄清楚它是如何工作的。为什么Code A打印42,为什么不打码?请帮帮我!

代码A

public class CodeA {
    public static void main(String[]args) {
        Scanner input = new Scanner(System.in);
        int n = 0;
        while(true) {
            if(n!=42) {
               n = input.nextInt();               
               System.out.println(n);
            }
            else{
                break;
            }
       }
   }
}

代码B

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

       Scanner in = new Scanner(System.in);

       while(true) {
          int n = in.nextInt();
          if(n == 42) {
            break;
          }
          System.out.println(n);
       }
    }
}

3 个答案:

答案 0 :(得分:1)

break适用于while,不适用于ifn==42输出System.out.println(n)无法访问时代码b

如果在等于42时需要打印n,则可以使用

if(n == 42) {
   System.out.println(n);
   break;
}

答案 1 :(得分:0)

CODEa所:

    while(true) {
        if(n!=42) {
            n = input.nextInt();   // Number is read here
            System.out.println(n); // and unconditionally (always) printed here, 42 or not
        }
        else{
            break; // At next iteration, if last number read was 42
                   // you break out of the "while" loop
        }
    }

CodeB:

   while(true) {
      int n = in.nextInt();
      if(n == 42) {
        break;    // You break here...
      }
      System.out.println(n); // ... so this is skipped...
   }
   // ... because execution resumes here.

答案 2 :(得分:0)

您对代码b 的期望是什么?

你写了if(n == 42)并在那里放了一个break?这是什么意思 ?并不意味着你想逃跑吗?

然后呢?当你输入42

时它会逃脱