为什么我得到" 0"在将数字转换为整数的前面部分?

时间:2016-09-15 10:52:42

标签: java

示例:当您键入" 1234567"时,显示" 0 1 2 3 4 5 6 7"。怎么能摆脱" 0"在前面?

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

4 个答案:

答案 0 :(得分:2)

您可以通过以下方式解决此问题:

while (length > 0) { // iterating one less time
    int substraction = (int) Math.pow(10, length-1); // length-1 to get from first digit
    ...
}

无论如何,你可以改进你的代码,甚至做一点技巧,所以你不需要计算:

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

String str = String.valueOf(num);
for (int i = 0; i < str.length(); i++) {
    System.out.print(str.charAt(i)+"\t");
}

答案 1 :(得分:2)

考虑第一次迭代。

length7

pow(10, 7)10,000,000(为了清楚起见,我将逗号括起来。)

num2 / sub % 10;被评估为(num2 / sub) % 10,因为/优先级%相同,因此评估是从左到右。

这是(1,234,567 / 10,000,000) % 10 0 % 10,因为整数除法会截断数字。所以你的第一个输出是0

最简单的修复可能是从length的初始值中减去1。

答案 2 :(得分:0)

试试这段代码。现在你会找到你想要的输出

TRANSACTION

答案 3 :(得分:0)

当num2&lt;减法。我试着用这种方式改变:

while ( length >= 0 ) {
    int substraction =(int) Math.pow(10, length--);
    int sub = (int) substraction; 

    if (num2 < substraction)
        continue;

    eachNum = num2 / sub % 10;
    System.out.print(eachNum + "\t");
}