虽然循环偶数
问题描述:
我的问题是以下。如果我输入数字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);
答
主要问题是,对于程序的关键部分,除了将其添加到正在运行的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是奇数前。
这可能是家庭作业,所以我会提示你:打印出循环底部的数字,总和,许多,平均,甚至和奇数的值。这样你可以确保变量在每次迭代后都有正确的值。 – 2014-11-02 17:51:19
请考虑使用[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
我知道其他类型的回答你,但不清楚你的问题是什么? – 2014-11-02 18:05:07