簡體   English   中英

Java無聲地無法從數組打印

[英]Java silently failing to print from array

我正在嘗試將整數轉換為數字數組,然后按順序打印出這些數字。 這是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();

也歡迎對我的代碼的組織,樣式和格式進行任何評論。

任何幫助表示感謝!

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

這將不起作用,您在i==0進行迭代,除非this.ns.length == 1否則i在第一個循環中永遠不會為0

你需要

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));

除了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]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM