那么如果我输入了一个整数:
int num_1 = 128
我该如何解析这个数字并获取其中的1、2和8,并将它们分配给不同的变量?
谢谢!
一种低效的方法是将整数转换为字符串,然后迭代字符串字符。
更高效的方法是像这样:
int n = 128;
while (n > 0) {
int d = n / 10;
int k = n - d * 10;
n = d;
System.out.println(k);
}
char[] digitsAsChars = String.valueOf(num_1).toCharArray();
int[] digits = new int[charNums.length];
for(int i=0; i<charNums.length; i++){
digits[i] = charNums[i]-48;//convert char to int
}
digits
是一个整型数组,其中包含了数字的各个位数。尝试
while (num_1> 0){
int digit = num_1%10;
num_1 = num_1/10;
System.out.println(digit);
}
int num = 128;
String number = String.valueOf(num);
for(int i = 0; i < number.length(); i++) {
int j = Character.digit(number.charAt(i), 10);
System.out.println("digit: " + j);
}
输出:
digit: 1
digit: 2
digit: 8
将其转换为字符串,逐个处理数字的每个字符:
char[] digits = String.valueOf(num_1).toCharArray();
String digits = Integer.toString(num_1);
int digit1 = Character.digit(digits.charAt(0), 10);
int digit2 = Character.digit(digits.charAt(1), 10);
int digit3 = Character.digit(digits.charAt(2), 10);
String sDigits = Integer.toString(num_1);
char[] cDigits = sDigits.toCharArray();
int[] digits = new int[cDigits.length];
for (int i = 0; i < cDigits.length; i++)
digits[i] = Character.digit(cDigits[i], 10);
int digit1 = digits[0];
int digit2 = digits[1];
int digit3 = digits[2];
// Returns digit at pos
static int digitAt(int input, int pos){
int i =(int) (input%(Math.pow(10, pos)));
int j = (int) (i/Math.pow(10, pos-1));
return Math.abs(j); // abs handles negative input
}
input = 1234
并且pos = 2
,那么i
是34
。我们将34
除以10
并四舍五入得到3
。收集数组中的所有数字并进行进一步使用
import java.lang.Integer;
import java.lang.String;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class Test
{
public static void main(String[] args) {
Integer num = 12345;
Integer[] digits = getDigits(num.toString());
System.out.println(Arrays.toString(digits));
}
public static Integer[] getDigits(String number) {
List<Integer> digits = new ArrayList<Integer>();
for(int i = 0; i < number.length(); i++) {
int j = Character.digit(number.charAt(i), 10);
digits.add(j);
}
return digits.toArray(new Integer[]{});
}
}
输出结果应该是:
[1, 2, 3, 4, 5]
int n = 123456789;
int digits = (int) Math.log10(n);
for (int i = (int) Math.pow(10, digits); i > 0; i /= 10) {
System.out.println(n / i);
n %= i;
}
输出将会是
1
2
3
4
5
6
7
8
9
String string = "Th1s 1s n0t a number";
int newNum = Integer.parseInt(string.replaceAll("[\\D]", ""));
return newNum;
这应该返回110
同时,这里有一个我发现非常有帮助的堆栈讨论链接。 从带字母的字符串中获取整数,在Java中
int k = n % 10
替换int k = n - d * 10
。 - Qiang