0

我正在尝试将整数转换为数字数组,然后按顺序打印这些数字。这是 Java 中的一个早期问题:如何编程,我很困惑为什么我不能让它工作。

这是我的课:

public class AnyDigits {
    private int[] ns;

    public AnyDigits(int n){
        this.ns = new int[String.valueOf(n).length()];
        for(int i = 0, x = n; x > 0; i++, x = x / 10){
            this.ns[i] = x % 10;
        }
    }
    public void printDigits(){
        for(int i = this.ns.length - 1; i == 0; i--){
            System.out.printf("%d ", this.ns[i]);
        }
    }
}

我的主要方法中有这段代码:

AnyDigits digitsTest = new AnyDigits(42339);
digitsTest.printDigits();

也欢迎对我的代码的组织、风格和格式提出任何意见。

任何帮助都感激不尽!

4

2 回答 2

4
for(int i = this.ns.length - 1; i == 0; i--){
    System.out.printf("%d ", this.ns[i]);
}

这行不通,你在迭代 while i==0i永远不会0在第一个循环中,除非this.ns.length == 1

你需要

for(int i = this.ns.length - 1; i != 0; i--){
    System.out.printf("%d ", this.ns[i]);
}

或者

for(int i = this.ns.length - 1; i >= 0; i--){
    System.out.printf("%d ", this.ns[i]);
}

无论如何,如果你想打印一个数组,你可以这样做

System.out.println(Arrays.toString(yourArray));
于 2013-08-30T12:31:41.453 回答
2

除了BackSlash的答案之外的另一种方式-

private static int[] makeArrayFromInt(final int val){

    String temp = String.valueOf(val);

    int[] digits = new int[temp.length()];

    for(int i = 0; i < temp.length(); i++){
        digits[i] = Integer.parseInt(temp.substring(i, i + 1));
    }

    return digits;

}

测试:

int[] digits = makeArrayFromInt(12234);
for(int i = 0; i < digits.length; i++){
    System.out.println(digits[i]);
}
于 2013-08-30T12:40:45.360 回答