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.
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.