2014-02-24 53 views
1

提示:您可以使用布爾表達式(x/2)* 2 == x來測試整數x是偶數還是奇數。整數甚至使這個表達式成立,奇數整數使表達式成爲假。使用for循環迭代五次。在每次迭代中,從用戶請求一個整數。打印用戶類型的每個整數,以及它是偶數還是奇數。跟上用戶鍵入的偶數和奇數的數量,並在完成時打印「完成」,以便用戶不會嘗試輸入另一個整數。最後,輸出輸入的偶數和奇數的數量。Java中的布爾值

這裏是我到目前爲止的代碼:

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter an integer."); 
    int x = in.nextInt(); 
    boolean even; 
    for (int i = 0; i == 5; i++) { 
     if ((x/2) * 2 == x) { 
      even = true; 
      System.out.println(x + " is even."); 
     } 
     if ((x/2) * 2 != x) { 
      even = false; 
      System.out.println(x + " is odd."); 
     } 
    } 
} 

不是尋找一個解決方案,只是一些幫助,以什麼我需要做的。真的對整個布爾事物感到困惑。

+1

你面臨什麼問題?是否能夠按預期打印偶數/奇數? – Kakarot

+1

指定時請注意類型的大小寫。布爾值是具有true和false值的基本類型,而Boolean是包裝布爾類型的包裝類。布爾意圖也包含true或false,但它是一個類而不是原始的。 – mikemil

回答

-1

一個更簡單的找到奇偶值的方法是除以2號,並檢查其餘:

if(x % 2 == 0) // remainder is 0 when divided by 2 
{ 
//even num 
} 
else 
{ 
//odd num 
} 
1

那麼,你的循環將不火;每當你到達循環時,i == 5總會是錯誤的。

你可能想改變你的循環語句是將是:

for (int i = 0; i <= 5; i++) { 
    // code 
} 

此外,利用方式的Java評估分支機構,可變even可能沒有被初始化。你需要用一個值來實例化它。

boolean even = false; 

最後,告訴數字是否是偶數的最直接的方法是使用模運算符。如果它可以被二整除,那甚至是可以的。否則,這很奇怪。

if (x % 2 == 0) { 
    // even, do logic 
} else { 
    // odd, do logic 
} 

缺少從分配的要求 - 即,有能力保持奇數和偶數的個數的流水賬,但我將它作爲一個練習留給讀者。

+0

表達式'(x/2)* 2 == x'不會總是評估爲真。變量'x'是一個整數。而且,你「留下來作爲練習」的部分是問題的全部。 –

+0

我真的很難在數學上看到如何不會總是減少到'x == x'。因爲,當我手工完成這項工作時,以及當我將它投入幾個CAS系統(包括Wolfram Alpha)時,就是這樣。 – Makoto

+0

你爲什麼不嘗試一下,親自看看爲什麼只有偶數纔是真的? –

0

您缺少的部分是記錄遇到了多少偶數和奇數。你將需要兩個獨立的int變量,你將在主循環之前聲明這個變量。

int numEvens = 0; 
int numOdds = 0; 

然後,在你的工作中輸入的號碼是奇數還是偶數,你會增加一個號碼或其他分支機構。

最後,在程序結束時,您可以在消息中打印出來。

1

這似乎像你的功課。

好像你的'boolean even'甚至沒有被使用,我建議你不要聲明也不要使用它。使用x = x%2來獲得數字,如果它是偶數或奇數更好。如果是連x應爲0,如果是奇數,則x應爲1%,相當於MOD

public static void main(String[] args) { 
Scanner in = new Scanner(System.in); 
int x; 
int even = 0; // keep tracks the number of even 
int odd = 0; // keep tracks the number of odd 
for (int i = 0; i < 5; i++) { 
    System.out.println("Enter an integer."); 
    x = in.nextInt(); 
    if (x % 2 == 0) { 
     even++; 
     System.out.println(x + " is even."); 
    } 
    if (x % 2 == 1) { 
     odd++; 
     System.out.println(x + " is odd."); 
    } 
} 
System.out.println("Done"); 
System.out.println("Evens: " + even "\nOdds: " + odd); 
} 

此代碼應爲您的家庭作業要求的答案。你的in.nextInt()應該在for循環中,因爲你需要5次請求用戶。不僅如此,你的循環應該是< 5,因爲它會從0,1,2,3,4循環5次