Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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,有人能帮我解决这个计算机科学课程的编程问题吗?我需要编写一个应用程序,将读取用户给定的数字,然后打印奇数和偶数以及零的数量。这就是我目前所拥有的。当输入一个数字时,我会连续收到过多的偶数数字 Scanner scan = new Scanner(System.in); //3.6 int value; int num = 0; int even = 0; int odd = 0; int zero = 0; System.out.println("Please enter a number.

有人能帮我解决这个计算机科学课程的编程问题吗?我需要编写一个应用程序,将读取用户给定的数字,然后打印奇数和偶数以及零的数量。这就是我目前所拥有的。当输入一个数字时,我会连续收到过多的偶数数字

Scanner scan = new Scanner(System.in);

//3.6
int value;
int num = 0;
int even = 0;
int odd = 0;
int zero = 0;

System.out.println("Please enter a number.");
value = scan.nextInt();

while(value >= 0)
{
    num = (value % 10);

    if(num % 2 == 0)
    {

         even++;
    }
    else if(num % 2 != 0)
    {

        odd++;
    }
    else if(num == 0)
    {

         zero++;
    }

    value = value/10;
    System.out.println("even numbers: " + even);
    System.out.println("odd numbers: " + odd);
    System.out.println("zeros: " + zero);
}

只需将
while(value>=0)
更改为
while(value>0)
并按如下方式重新排列
if..else if
语句:

if(num == 0)
{
     zero++;
}
else if(num % 2 == 0)
{
     even++;
}
else if(num % 2 != 0)
{
    odd++;
}

通过这种方式,您还可以计算零。(考虑
0%2==0

只需将
while(value>=0)
更改为
while(value>0)
并按如下方式重新排列
if..else if
语句:

if(num == 0)
{
     zero++;
}
else if(num % 2 == 0)
{
     even++;
}
else if(num % 2 != 0)
{
    odd++;
}
通过这种方式,您还可以计算零。(考虑
0%2==0

这样编写代码可以提供如下输出:

Please enter a number.
512222

even numbers: 4
odd numbers: 2
zeros: 1
这样编写代码可以提供如下输出:

Please enter a number.
512222

even numbers: 4
odd numbers: 2
zeros: 1

以下是一个简单有效的解决方案:

    Scanner scan = new Scanner(System.in);

    //3.6
    int value;
    int num = 0;
    int even = 0;
    int odd = 0;
    int zero = 0;

    System.out.println("Please enter a number.");
    value = scan.nextInt();
    char[] charValue = String.valueOf(value).toCharArray();

    for (char c: charValue) {
        num = Character.getNumericValue(c);

        if (num == 0) {

            zero++;
        }else if (num % 2 == 0) {

            even++;
        } else {
            odd++;
        }
    }

    System.out.println("even numbers: " + even);
    System.out.println("odd numbers: " + odd);
    System.out.println("zeros: " + zero);

以下是一个简单有效的解决方案:

    Scanner scan = new Scanner(System.in);

    //3.6
    int value;
    int num = 0;
    int even = 0;
    int odd = 0;
    int zero = 0;

    System.out.println("Please enter a number.");
    value = scan.nextInt();
    char[] charValue = String.valueOf(value).toCharArray();

    for (char c: charValue) {
        num = Character.getNumericValue(c);

        if (num == 0) {

            zero++;
        }else if (num % 2 == 0) {

            even++;
        } else {
            odd++;
        }
    }

    System.out.println("even numbers: " + even);
    System.out.println("odd numbers: " + odd);
    System.out.println("zeros: " + zero);

当num为零时,num%2将等于0,因此您将得到不正确计数为偶数的零。当num为零时,num%2将等于0,因此您将得到不正确计数为偶数的零。这将进入无限循环。用100I试试,结果是
zero:1
end然后它成功地结束了,看不到中断这进入了一个无限循环。用100I试试,结果是
zero:1
end然后它成功地结束了,没有看到中断