2013-08-30 44 views
0

我試圖將整數轉換爲數字數組,然後按順序打印這些數字。這是Java中的一個早期問題:如何編程,我很困惑爲什麼我不能使它工作。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
for(int i = this.ns.length - 1; i == 0; i--){ 
    System.out.printf("%d ", this.ns[i]); 
} 

這樣可不行,你迭代而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)); 
+0

確認,我應該早就知道這將是我的一部分了一些愚蠢的。非常感謝,我會在這裏試圖挽救我的尊嚴。 –

+1

@JamesDuval哈哈,沒有失去尊嚴,如果不熟悉他們使用的語言,每個人都會犯錯誤! – BackSlash

+1

> =版本更安全。如果我曾經在循環中操作過,意外無限循環的機會就會減少。 – Cruncher

2

另一種方式除了反斜線的回答 -

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]); 
} 
+0

乾杯。在這個特殊情況下,根據練習的條款,我不得不使用模數/模運算符,但是我真的很感謝看到針對同一問題的不同方法。 –