Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要帮助计算偶数和奇数整数吗_Java - Fatal编程技术网

Java 需要帮助计算偶数和奇数整数吗

Java 需要帮助计算偶数和奇数整数吗,java,Java,好的,我正在复习Java考试,其中一个问题问我们: 我们希望开发一个程序来计算集合中偶数和奇数整数的数量(“偶数”表示可被2整除,“奇数”表示不可被2整除)。我们将使用零作为该集合已完全输入的指示器,并且该零不应被视为集合的一部分。要求用户输入以零结尾的整数序列。输出偶数整数和奇数整数 当我运行代码时,出于某种原因,第一个变量总是被算作偶数,而不管整数是什么。我一辈子都不知道为什么。示例:我键入23、22、25。上面写着2偶数1奇数。但是,如果我输入22,23,25,它会显示1偶数2奇数 这是我

好的,我正在复习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()){…}