我想我的int值分成数字。例如,如果没有。是542,结果应该是5,4,2。分裂int值成独立的数字
我有2种选择。 1)转换成INT字符串&然后通过使用getCharArray()中,i可以具有单独的字符&然后我将它们转换回INT值。
2)转换成INT字符串,而不将其转换成字符数组,迭代它&得到所有数字。
是否有任何其他的方式来解决这个问题。如果不是,哪个选项会很快?
我想我的int值分成数字。例如,如果没有。是542,结果应该是5,4,2。分裂int值成独立的数字
我有2种选择。 1)转换成INT字符串&然后通过使用getCharArray()中,i可以具有单独的字符&然后我将它们转换回INT值。
2)转换成INT字符串,而不将其转换成字符数组,迭代它&得到所有数字。
是否有任何其他的方式来解决这个问题。如果不是,哪个选项会很快?
List<Integer> digits(int i) {
List<Integer> digits = new ArrayList<Integer>();
while(i > 0) {
digits.add(i % 10);
i /= 10;
}
return digits;
}
除以十得到剩余物,把他们在您选择的集合/数组,继续这样做,直到商为零,你已经是一个余
int num = 542;
if (num<0) num=-num; // maybe you'd like to support negatives
List<Integer> digits = new LinkedList<Integer>();
while (num>0) {
digits.add(0, num%10);
num=num/10;
}
System.out.println(Arrays.toString(digits.toArray())); // [5, 4, 2]
你可以使用一个堆栈,而不是一个ArrayList,如果排序是一个大问题。当从堆叠中弹出数字时,您将按照正确的顺序得到它们,首先是最重要的数字。
int digits(int i) {
int num=0;
while(i > 0) {
num *= 10;
num += i % 10;
i /= 10;
}
return num;
}
这会为您分割数字。现在把它们放到一个数组中,而不是将它们打印出来,然后用数字做任何你想要的。如果你想添加它们,你可以用sum += z;
来代替System.out
。
public class Splitter {
public static int numLength(int n) {
int length;
for (length = 1; n % Math.pow(10, length) != n; length++) {}
return length;
}
public static void splitNums(double x){
double y, z, t = x;
for (int p = numLength((int)x)-1; p >= 1; p--){
y = t % Math.pow(10, (numLength((int)(t))-1));
z = ((t - y)/Math.pow(10, p));
t = t - (z * Math.pow(10, p));
System.out.println(Math.abs((int)(z)));
}
System.out.println(Math.abs((int)(t)));
}
}
该算法将原始“int”分成单个数字。它从最后一位数字开始,直到第一位。
类IntegerSplitterDemo {
static boolean digitChoper(int num) {
for(int i = 10; i <= Integer.MAX_VALUE; i *= 10 ) {
//Starts from the last digit so it will display the int in reverse order
int remainder = (i == 10) ? num % 10 : (num % i/(i /10));
//You can store the remainder value into ArrayList
System.out.print(remainder + " ");
//stop iterating the loop
if(num % i == num) { break; }
}
System.out.println("");
return true;
}
public static void main(String[] args) {
int[] num = {0, 371, 372, 678, 432, 569, 341, 371, 567, 2569874};
for(int number : num) {
digitChoper(number);
}
} // end main
}
如果i = 0,则失败。 – 2011-03-04 16:51:29
该列表将向后。 – 2011-03-04 17:18:10
@Steve够公平 - 负数也失败。特殊情况作为练习留给读者。 – corsiKa 2011-03-04 17:44:59