2016-09-28 66 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(); 
} 

該代碼會在每次輸入的號碼比較前面的號碼以提供結果。