我正在尝试将整数转换为数字数组,然后按顺序打印这些数字。这是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();
对我的代码的组织,样式和格式的任何评论也欢迎。
感激不尽的任何帮助!
答案 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]);
}