请帮助......我需要编写一个程序,根据用户输入显示偶数和奇数,但它在我上一次打印语句中永远循环。
到目前为止,这是我的错误?
import java.util.Scanner;
public class Integer {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = 0;
int odd = 0;
int even = 0;
System.out.println("How many numbers will be entered?");
n = input.nextInt();
while (n < 0 || n > 100) {
System.out.println("ERROR! Valid range 0-100. RE-Enter:");
n = input.nextInt();
}
while(n >= 0) {
System.out.println("Now enter " + n + " integers: ");
int num = input.nextInt();
while(num > 0) {
for(int i = 0; i <= n; i++){
if (i % 2 == 0) {
even++;
}
else {
odd++;
}
System.out.println("You entered " + odd + " odd numbers and " + even + " even numbers.");
}
}
}
}
}
答案 0 :(得分:2)
Scanner input = new Scanner(System.in);
int n = 0;
int odd = 0;
int even = 0;
System.out.println("How many numbers will be entered?");
n = input.nextInt();
while (n < 0 || n > 100) {
System.out.println("ERROR! Valid range 0-100. RE-Enter:");
n = input.nextInt();
}
while (n > 0) {
System.out.println("Now enter integer " + n + ": ");
int num = input.nextInt();
if (num % 2 == 0) {
even++;
} else {
odd++;
}
n--;
}
System.out.println("You entered " + odd + " odd numbers and " + even + " even numbers.");
<强>解释强>:
您处理来自用户的n
输入,只需检查输入是奇数还是if语句。你太复杂了。
答案 1 :(得分:0)
你有太多while循环的问题。你不会在任何地方递减n
,但是当它大于0时你也会循环num
。所以如果它们在那里粘贴了0以外的东西,它将永远循环。
System.out.println("Now enter " + n + " integers: ");
while(n >= 0) {
int num = input.nextInt();
if(num > 0) {
if (num % 2 == 0)
even++;
else
odd++;
}
n--;
}
System.out.println("You entered " + odd + " odd numbers and " + even + " even numbers.");
答案 2 :(得分:-1)
由于input.nextInt()
而发生无限/永久循环,这是由于Scanner类的next()
方法的行为造成的。
next(), nextInt()
及其他变体不会将光标移动到下一行(当前行的结尾 - 而是使用默认分隔符作为空格读取第一个完整的标记)。另一方面,nextLine()
方法读取整个输入并将光标移动到下一行。
您的代码可以通过添加input.nextLine()
来修复,以便在进行下一次输入之前将光标移动到行的开头。见下面的修改代码。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = 0;
int odd = 0;
int even = 0;
System.out.println("How many numbers will be entered?");
n = input.nextInt();
while (n < 0 || n > 100) {
System.out.println("ERROR! Valid range 0-100. RE-Enter:");
n = input.nextInt();
}
for(int i = 0 ; i < n; i++) {
System.out.println("Now enter integer " + (i+1) + " of " + n + " integers: ");
int num = input.nextInt();
while(num < 0) {
System.out.println("ERROR! Valid range 0-100. RE-Enter:");
num = input.nextInt();
}
//this line is needed to move the input cursor to next line (due to use of nextInt() above)
input.nextLine();
if(i%2==0) {
even++;
} else {
odd++;
}
}
System.out.println("You entered " + odd + " odd numbers and " + even + " even numbers.");
}