虽然循环偶数

问题描述:

我的问题是以下。如果我输入数字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

主要问题是,对于程序的关键部分,除了将其添加到正在运行的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

你的代码读取输入的第二行到number它检查number是奇数... -1是奇数前。