2016-09-28 40 views
-6

在学校,我们正在学习一些基本的Java编码,现在我们正在学习循环和比较。所以我想要做的是询问多个数字,并且在输入相同的数字之后,需要打印出“woo”。该程序需要不断询问数字,直到输入相同数字中的两个。比较循环中的2个数字无法正常工作

现在我的问题是,当我输入2相同的数字,它正常工作,但是当我第一次键入1号码,然后2相同的数字没有任何反应。

代码:

for (int i = 1; i < 2;) { 
     int number1 = scanner.nextInt(); 
     int number2 = scanner.nextInt(); 

     if (number1 == number2 || number2 == number1){ 
      System.out.println("Woo!"); 
      break; 
     } 

    } 
+0

'number1 == number2 || number1 == number2' - 你想做什么? – Maroun

+0

woops,第二个应该是number2 == number1 – mrfatmanjunior

+0

..这是完全一样的..'1 == 1'与...'1 == 1'相同# – Maroun

回答

0

为了让您更好的代码的例子:

int number1 = scanner.nextInt(); 
int number2 = 0; 
while (true) { 
     number2 = scanner.nextInt();  

     if (number1 == number2){ 
      System.out.println("Woo!"); 
      break; 
     } 
     number1 = number2; 

} 

说明:
该代码会一直比较两个最后输入的数字。 (例如1,2,2将打印Woo!)。
为了更好的易读性,我将for循环更改为while循环。
number1 == number2回报总是与number2 == number1相同。这就是为什么number1 == number2 || number2 == number1不需要。

0

你在做什么是从STDIN中读取两个数字并比较循环中的数字。你总是在输了前两个数字在下一次迭代。

您想要做的是一次读取一个数字,并将其与先前读取的数字进行比较。

顺便说一句:如果number1 == number2true(或false),number2 == number1总是true(或false)为好。所以你的表达的第二部分是多余的。

0

上面的答案是有点正确的,但它会比较number1和number2 = 0时做一个额外的比较。 要避免这种情况,你可以做到以下几点:

int number1 = scanner.nextInt(); 
int number2 = scanner.nextInt(); 

for (int i = 1; i < 2;) { 

if (number1 == number2){ 
     System.out.println("Woo!"); 
     break; 
    } 

     number1 = number2; 
     number2 = scanner.nextInt(); 
} 

该代码会在每次输入的号码比较前面的号码以提供结果。