在Java中,如何计算多位数中的奇数、偶数和零数?

在Java中,如何计算多位数中的奇数、偶数和零数?,java,count,zero,Java,Count,Zero,基本上,我需要编写一个程序,以整数的形式接受用户输入,包括2^31-1,并返回整数中的奇数、偶数和零数。例如 Input: 100 Output: 1 Odd, 0 Even, 2 Zeros // 1(Odd)0(Zero)0(Zero) 或 我很确定我想得太多了,但我不能让我的大脑慢下来。有人能帮忙吗? 这是代码的第三次迭代,前两次尝试使用for循环 import java.util.Scanner; public class oddEvenZero { public sta

基本上,我需要编写一个程序,以整数的形式接受用户输入,包括
2^31-1
,并返回整数中的奇数、偶数和零数。例如

Input: 100
Output: 1 Odd, 0 Even, 2 Zeros // 1(Odd)0(Zero)0(Zero)

我很确定我想得太多了,但我不能让我的大脑慢下来。有人能帮忙吗? 这是代码的第三次迭代,前两次尝试使用for循环

import java.util.Scanner;

 public class oddEvenZero
 {
    public static void main(String[] args) {
        Scanner scan = new Scanner (System.in);
        int value;
        int evenCount = 0, oddCount = 0, zeroCount = 0;

        System.out.print("Enter an integer: ");
        value = scan.nextInt();

        while (value > 0) {

        value = value % 10;

        if (value==0) 
        {
           zeroCount++;
        }
        else if (value%2==0) 
        {
           evenCount++;
        }
        else 
        { 
           oddCount++;
        }
        value = value / 10;
    }
    System.out.println(); 
    System.out.printf("Even: %d Odd: %d Zero: %d", evenCount, oddCount, zeroCount);
 }
}
对不起,文本框中的代码格式很奇怪

 value = value % 10;
也许结局都是你的问题

如果
value
2034
,则
value%10
返回
4
。。。然后将该值分配给
,您将通过
if else
块,然后执行
4/10
获取
0
,并退出
while循环
,而不寻址其他3位数字

我建议更像这样:

while (value > 0) {

    if ((value%10)==0) {
       zeroCount++;
    }
    else if (value%2==0) { //As per comment below...
       evenCount++;
    }
    else { 
       oddCount++;
    }

    value /= 10;
}
或者,
int thisDigit=value%10
,然后将当前
if else
块中的
value
替换为
thisDigit

value = value % 10;
此语句将使用一个提醒覆盖原始的
值,即
值%10

如果
value=2034
value%10=4
,则
value=4
不是您想要的

而是使用一个临时变量

int lastDigit = value % 10;
然后你的代码变成

while (value > 0) {

    int lastDigit = value % 10;

    if (lastDigit==0) 
    {
       zeroCount++;
    }
    else if (lastDigit%2==0) 
    {
       evenCount++;
    }
    else 
    { 
       oddCount++;
    }
    value = value / 10;
}

导入java.util.Scanner

公共类零 {

public int[]convertstringarraytintarray(String[]sarray)引发异常{
if(sarray!=null)
{
int k=sarray.length-1;
int intarray[]=新的int[k];
for(int i=1;i

}

如果你们中的一些人仍然无法理解这段代码,我在四处搜索时发现了这段代码,效果很好:

import java.util.*;

public class Java_1
{
    public static void main (String[] args)
    {
        String string;
        int zero = 0, odd = 0, even = 0, length, left = 0;

        Scanner scan = new Scanner(System.in);

        System.out.print ("Enter any positive number: ");
        string = scan.next();

        length = string.length();

        while (left < length)
        {
            string.charAt(left);
            if (string.charAt(left) == 0)
                zero++;
            else if (string.charAt(left) % 2 == 0)
                even++;
            else
                odd++;

            left++;
        }

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

    }
}
import java.util.*;
公共类Java_1
{
公共静态void main(字符串[]args)
{
字符串字符串;
int零=0,奇数=0,偶数=0,长度,左=0;
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入任何正数:”);
string=scan.next();
length=string.length();
while(左<长)
{
string.charAt(左);
if(string.charAt(左)==0)
零++;
else if(string.charAt(左)%2==0)
偶数++;
其他的
奇数++;
左++;
}
System.out.println(“有:“+zero+”zero.”);
System.out.println(“有:“+偶数+”偶数”);
System.out.println(“有:“+奇数+”奇数”);
}
}

0是一个偶数,你知道。这是刘易斯/洛夫图斯的一个图书作业。谢谢你的回答。你为什么要写
(值%10)%2
?因为这比
值%20
更清楚你实际上想做什么,谢谢。我没注意到。但是,现在它将0计算为偶数。我以为if-else块的逻辑结构会阻止这种情况发生?我不明白为什么它会这样做。。。在我能看到它之前,插入一个断点,看看它在做什么。但是
(值%10)%2
不是
值%20
-它只是
值%2
。如果一个数字的最后一位是偶数,那么这个数字本身就是偶数。@nhgrif我很抱歉,先生。我希望将来能一起解决一个问题:)
 public int[] convertStringArraytoIntArray(String[] sarray) throws Exception {


     if (sarray != null) 
        {
            int k= sarray.length-1;
            int intarray[] = new int[k];

                for (int i = 1; i < sarray.length; i++) {

                    intarray[i-1] = Integer.parseInt(sarray[i]);
                }

                return intarray;
        }
        return null;
        }


 public static void main(String[] args) {


    Scanner scan = new Scanner (System.in);

    String value;

    System.out.print("Enter an integer: ");

    value = scan.next();


    String words[] = value.split("");



    oddEvenZero obj = new oddEvenZero();

  try{

  int intarray[]=   obj.convertStringArraytoIntArray(words);

 int even_number =0;
 int odd_number =0;
 int zero_number =0;
  for (int h: intarray)
  {

      if(h==0)
      {
         zero_number++; 

      }
      else if(h%2==0)
      {

          even_number++;
      }

      else{

          odd_number++; 
      }
  }

 System.out.println("even numbers are"+ even_number);

 System.out.println("odd numbers are"+odd_number);
 System.out.println("Zero numbers are"+zero_number); 
  }


 catch(Exception ex)
 {

     System.out.println("Please enter number");



 }

}      
import java.util.*;

public class Java_1
{
    public static void main (String[] args)
    {
        String string;
        int zero = 0, odd = 0, even = 0, length, left = 0;

        Scanner scan = new Scanner(System.in);

        System.out.print ("Enter any positive number: ");
        string = scan.next();

        length = string.length();

        while (left < length)
        {
            string.charAt(left);
            if (string.charAt(left) == 0)
                zero++;
            else if (string.charAt(left) % 2 == 0)
                even++;
            else
                odd++;

            left++;
        }

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

    }
}