2014-11-02 124 views
-1

我的問題是以下。如果我輸入數字2,則代碼將其計爲一個奇數。雖然循環偶數

剩餘2/2 = 0,所以錯誤沒有意義。

下面是程序:

import java.util.Scanner; 

public class Ohjelma { 

public static void main(String[] args) { 

    // Tänne voit kirjoittaa ohjelmakoodia. Ohjelmasi voit ajaa 
    // valitsemalla menusta Run->Run File tai painamalla Shift+F6 
    Scanner reader = new Scanner(System.in); 
    System.out.println("Type numbers: "); 
    int number = Integer.parseInt(reader.nextLine()); 
    int sum = 0; 
    int many = 0; 
    double average = 0; 
    int even = 0; 
    int odd = 0; 

    while (number != -1) { 
     System.out.println("Type numbers: "); 
     sum = sum + number; 
     number = Integer.parseInt(reader.nextLine()); 
     many++; 
     average = (double)sum/many; 
     if (number%2 == 0) { 
      even++; 
     } else { 
      odd++; 
     } 
    } 

    System.out.println("Thank you and see you later!"); 
    System.out.println("The sum is " + sum); 
    System.out.println("How many numbers: " + many); 
    System.out.println("Average: " + average); 
    System.out.println("Even numbers: " + even); 
    System.out.println("Odd numbers: " + odd); 
+1

這可能是家庭作業,所以我會提示你:打印出循環底部的數字,總和,許多,平均,甚至和奇數的值。這樣你可以確保變量在每次迭代後都有正確的值。 – 2014-11-02 17:51:19

+0

請考慮使用[Scanner.nextInt()](http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt(int))或捕獲NumberFormatException ''parseInt'可以拋出。這種遺漏使我的眼睛流血。 – mabi 2014-11-02 17:52:38

+0

我知道其他類型的回答你,但不清楚你的問題是什麼? – 2014-11-02 18:05:07

回答

1

主要問題是,對於程序的關鍵部分,除了將其添加到正在運行的sum之外,它基本上忽略了第一個輸入。你想重寫它:

Scanner reader = new Scanner(System.in); 
int sum = 0; 
int many = 0; 
double average = 0; 
int even = 0; 
int odd = 0; 

do { 
    System.out.println("Type numbers: "); 
    number = Integer.parseInt(reader.nextLine()); 
    if (number == -1) 
     break; 
    sum = sum + number; 
    many++; 
    average = (double)sum/many; 
    if (number%2 == 0) { 
     even++; 
    } else { 
     odd++; 
    } 
} while (true); 

這將肯定處理正確的偶數和奇數。

+0

感謝您的回答,解決了這個問題! – SpaceRock 2014-11-02 22:10:55

+0

@SpaceRock不客氣!如果有幫助,請點擊標記以將其標記爲已接受的答案(同時也提供一些重要點)。 – 2014-11-03 06:15:32

0

你的代碼讀取輸入的第二行到number它檢查number是奇數... -1是奇數前。