0

I'm trying to write a small program that will accept an integer input and count the number of even, odd, and zero digits. I can get everything to work except counting how many times 0 occurs in the integer. If I write my conditional statement like:

if(inputString.charAt(index) == '0')

it works. But if I write:

if(test == 0)

It does not work. For some reason I can't query the existence of 0 directly as a number. I have to change it to a string and find it that way. Why can't I just query it directly like in my second example? Seems like it should be pretty straightforward.

import java.util.Scanner;

public class ParseInt {
    public static void main(String[] args) {
        
        //Declarations
        int index = 0, test, odd = 0, even = 0, zero = 0;
        String inputString;
        Scanner scan = new Scanner(System.in);
        
        //Inputs
        System.out.println("Input an integer");
        inputString = scan.nextLine();
        
        //Process
        while(index<= inputString.length()-1)
        {
            test = inputString.charAt(index);
            
            if(inputString.charAt(index) == '0') //this line here
                zero++;
            if(test%2 == 0)
                even++;
            if(test%2 != 0)
                odd++;
            
            index++;
        }
        
        System.out.println("The number of zero digits is " + zero + ".");
        System.out.println("The number of even digits is " + even + ".");
        System.out.println("The number of odd digits is " + odd + ".");
        
        scan.close();
    }
}

I tried changing the line in question to a string and querying that way. It works, but I want to try and query 0 as a number.

hfontanez
  • 5,774
  • 2
  • 25
  • 37

2 Answers2

0

When you use inputString.charAt(index) java get the ascii code of number 0 (that is 48).

When you compare it with char '0' Java compare ascii code 48 with 48 and it returns true, if you compare it with a integer Java try to do 0==48 and return false

You can examine this site to see every ascii code https://www.ascii-code.com/

fabio19933
  • 124
  • 8
0

The reason why your second attempt is not working is that a char holds a ASCII reference with has it own integer number. If you want to compare a int to char, you have to convert it and then compare, that's why your first attempt work as both is chars.