Java 需要帮助计算偶数和奇数整数吗
好的,我正在复习Java考试,其中一个问题问我们: 我们希望开发一个程序来计算集合中偶数和奇数整数的数量(“偶数”表示可被2整除,“奇数”表示不可被2整除)。我们将使用零作为该集合已完全输入的指示器,并且该零不应被视为集合的一部分。要求用户输入以零结尾的整数序列。输出偶数整数和奇数整数 当我运行代码时,出于某种原因,第一个变量总是被算作偶数,而不管整数是什么。我一辈子都不知道为什么。示例:我键入23、22、25。上面写着2偶数1奇数。但是,如果我输入22,23,25,它会显示1偶数2奇数 这是我的密码:Java 需要帮助计算偶数和奇数整数吗,java,Java,好的,我正在复习Java考试,其中一个问题问我们: 我们希望开发一个程序来计算集合中偶数和奇数整数的数量(“偶数”表示可被2整除,“奇数”表示不可被2整除)。我们将使用零作为该集合已完全输入的指示器,并且该零不应被视为集合的一部分。要求用户输入以零结尾的整数序列。输出偶数整数和奇数整数 当我运行代码时,出于某种原因,第一个变量总是被算作偶数,而不管整数是什么。我一辈子都不知道为什么。示例:我键入23、22、25。上面写着2偶数1奇数。但是,如果我输入22,23,25,它会显示1偶数2奇数 这是我
public class Problem4_Exam1Practice {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter Numbers");
int x = IO.readInt();
int even = 0;
int odd = 0;
while(x != 0) {
x = IO.readInt();
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
}
System.out.println(even + " even " + odd + " odd ");
}
}
输入的第一个数字永远不会计算:
int x = IO.readInt();
while(x != 0) {
x = IO.readInt();
...
}
然后,当进入循环时,它将在计算之前被覆盖:
int x = IO.readInt();
while(x != 0) {
x = IO.readInt();
...
}
一种解决方案是将读数移动到循环的末尾:
while(x != 0) {
...
x = IO.readInt();
}
输入的第一个数字永远不会计算:
int x = IO.readInt();
while(x != 0) {
x = IO.readInt();
...
}
然后,当进入循环时,它将在计算之前被覆盖:
int x = IO.readInt();
while(x != 0) {
x = IO.readInt();
...
}
一种解决方案是将读数移动到循环的末尾:
while(x != 0) {
...
x = IO.readInt();
}
问题是您总是忽略第一个数字,并将终止的
0
计算为偶数,这给人一种印象,即第一个数字总是被计算为偶数
您可以通过重新排序while
循环来解决此问题
while(x != 0) {
// check odd-even first
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
// then read next int
x = IO.readInt();
}
问题是您总是忽略第一个数字,并将终止的
0
计算为偶数,这给人一种印象,即第一个数字总是被计算为偶数
您可以通过重新排序while
循环来解决此问题
while(x != 0) {
// check odd-even first
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
// then read next int
x = IO.readInt();
}
这里有几个问题。首先,您的第一个值正在被消耗,但它没有在while循环中使用。另外,计算最后一个值,即0。最后读取值有助于解决该问题
public class Problem4_Exam1Practice {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter Numbers");
int x = IO.readInt();
int even = 0;
int odd = 0;
while (x != 0) {
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
x = IO.readInt();
}
System.out.println(even + " even " + odd + " odd ");
}
}
这里有几个问题。首先,您的第一个值正在被消耗,但它没有在while循环中使用。另外,计算最后一个值,即0。最后读取值有助于解决该问题
public class Problem4_Exam1Practice {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter Numbers");
int x = IO.readInt();
int even = 0;
int odd = 0;
while (x != 0) {
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
x = IO.readInt();
}
System.out.println(even + " even " + odd + " odd ");
}
}
我认为你的问题可能是因为第一个数字似乎被跳过了。您正在将其放入x中,然后在不查看它的情况下立即覆盖它。尝试改用do while循环,并将
x=IO.readInt()
放在末尾 我想你的问题可能是因为第一个数字似乎被跳过了。您正在将其放入x中,然后在不查看它的情况下立即覆盖它。尝试改用do while循环,并将x=IO.readInt()
放在末尾 您正在覆盖while中的第一个输入。你最好用一段时间来做这个
System.out.println("Enter Numbers");
// x = IO.readInt(); => remove this line
int even = 0;
int odd = 0;
while ((x = IO.readInt()) != 0) {
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
}
编辑:编辑代码以修复@jschultz410指出的问题。您正在覆盖while中的第一个输入。你最好用一段时间来做这个
System.out.println("Enter Numbers");
// x = IO.readInt(); => remove this line
int even = 0;
int odd = 0;
while ((x = IO.readInt()) != 0) {
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
}
编辑:编辑代码以修复@jschultz410指出的问题。谢谢大家的帮助!至于扫描仪,我们使用提供给我们的IO模块,所以我们“还不能”使用扫描仪。谢谢大家的帮助!至于扫描器,我们使用提供给我们的IO模块,所以我们还不能使用扫描器。publicstaticvoidmain(String[]args)抛出IOException{ //TODO自动生成的方法存根
System.out.println("Enter Numbers");
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
int even = 0;
int odd = 0;
while(true) {
String s1 = bufferRead.readLine();
int x = Integer.parseInt(s1);
if(x==0)
break;
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
}
System.out.println(even + " even " + odd + " odd ");
}
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
System.out.println("Enter Numbers");
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
int even = 0;
int odd = 0;
while(true) {
String s1 = bufferRead.readLine();
int x = Integer.parseInt(s1);
if(x==0)
break;
if (x % 2 == 0) {
even = even + 1 ;
}else{
odd = odd + 1 ;
}
}
System.out.println(even + " even " + odd + " odd ");
}
为什么是向下投票?完全有效的问题,而且是一个好的引导问题。向上投票。什么是
IO.readInt()
?不要在循环外设置x:for(x=IO.readInt();x!=0;x=IO.readInt()){…}为什么是向下投票?完全有效的问题,而且是一个好的引导问题。向上投票。什么是IO.readInt()
?不要在循环外设置x:for(x=IO.readInt();x!=0;x=IO.readInt()){…}