我是初学者。我在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);
}
}
}
答案 0 :(得分:1)
break
适用于while
,不适用于if
当n==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