Java默默无法从阵列打印

时间:2013-08-30 12:29:57

标签: java arrays for-loop printf

我正在尝试将整数转换为数字数组,然后按顺序打印这些数字。这是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();

对我的代码的组织,样式和格式的任何评论也欢迎。

感激不尽的任何帮助!

2 个答案:

答案 0 :(得分:4)

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

这不起作用,你在i==0时进行迭代,i在第一次循环时永远不会是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));

答案 1 :(得分: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]);
}