Sahar Max Sahar Max - 2 months ago 6
Java Question

Why I am getting "0" in front part of transforming digits into integer?

Example: when you type "1234567", it`s display "0 1 2 3 4 5 6 7". How can I rid of "0" in front part?

public static void main(String[] args){

int num = 0;
int eachNum = 0;
Scanner input = new Scanner(System.in);

System.out.print("Enter your number here: ");
num = input.nextInt();

int num2 = num;
int length = String.valueOf(num).length();
while ( length >= 0 ) {

int substraction =(int) Math.pow(10, length);
int sub = (int) substraction;
eachNum = num2 / sub % 10;
System.out.print(eachNum + "\t");
length--;

}

}//end main method

Answer

Consider the first iteration.

length is 7.

pow(10, 7) is 10,000,000 (I've put commas in for clarity).

num2 / sub % 10; is evaluated as (num2 / sub) % 10 due to the precedence of / and % being the same so evaluation is from left to right.

This is (1,234,567 / 10,000,000) % 10 which is 0 % 10 since integer division truncates the number. So your first output is 0.

The simplest fix is probably to subtract 1 from the initial value of length.

Comments