Java 而循环偶数计数

Java 而循环偶数计数,java,while-loop,Java,While Loop,我的问题如下。如果我输入数字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 Fil

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

在检查
number
是否为奇数之前,您的代码会将第二行输入读入
number
。。。和-1是奇怪的。

主要问题是,对于程序的关键部分,除了将其添加到正在运行的
总和中之外,它基本上忽略了第一个输入。您要像这样重铸它:

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);

这肯定会正确处理偶数和奇数。

这可能是家庭作业,因此我将提示您:在循环的底部打印出数字、总和、许多、平均值、偶数和奇数的值。这样,您就可以确保变量在每次迭代后都有正确的值。请考虑使用或捕获<代码> NoMbFrimeExtExabor <代码> > <代码> PARSETIN < /C>可以抛出。这种疏漏让我的眼睛流血。我知道其他的回答,但不清楚你的问题是什么?@SpaceRock,不客气!如果有帮助,请点击勾号标记为接受答案(也会给您一些代表分数)。