我正在创建一个需要逐位读取5位整数的方法。 (即26505将被读取为2 6 5 0 5,并且每个数字可以在另一种方法中单独读取)我无法将整数转换为字符串并读取每个字符,因为我需要通过另一种方法读取数字。它也被建议使用%10,但这不会给我个人数字。此外,需要从左到右逐位读取整数。我希望这很清楚,但我真的很困惑如何完成这一点,我尝试过的一切都行不通。任何提供的帮助将不胜感激,谢谢。
while(d>=10){
j=code%d;
d=d/10;
printDigit(j)
答案 0 :(得分:3)
从从左到右获取单个数字: -
26505 / 10000 = 2
26505 % 10000 = 6505
6505 / 1000 = 6
6505 % 1000 = 505
505 / 100 = 5
505 % 100 = 5
5 / 10 = 5
我认为你现在可以实现它了。
但是,如果你没有从右到左遍历,那就更容易了,因为那样你的分母将固定为10: -
26505 % 10 = 5
26505 / 10 = 2650
2650 % 10 = 0
2650 / 10 = 265
265 % 10 = 5
265 / 10 = 26
26 % 10 = 6
26 / 10 = 2
2 % 10 = 2
答案 1 :(得分:3)
这将返回一个整数位数的数组。
public static int[] integerToDigits(int n)
{
int[] digits= new int[5];
int temp = n;
for(int i = 0; i < 5; i++)
{
digits[4-i] = temp % 10;
temp /= 10;
}
return digits;
}
integerToDigits(12345) = {1,2,3,4,5}
答案 2 :(得分:0)
完全懒惰的东西看起来像
final int [] digits = {score % 1000 / 100, score % 100 / 10, score % 10};
如果您知道您的整数将永远不会超过999,那将会有效。
从这个例子中,通过从整数计算下一个10的幂,然后在循环中向数组添加数字来改进它以支持任意整数是微不足道的。
答案 3 :(得分:0)
你可以这样做:
e.g。
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
int[] digitArray = new int[str.length()];
for(int i=0; i<str.length(); i++)
{
String temp = Character.toString(str.charAt(i));
System.out.println("temp is "+temp);
digitArray[i] = Integer.parseInt(temp);
}
for (int i =0; i<digitArray.length; i++) {
System.out.println(digitArray[i]);
}