[英]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.