0

我正在创建一种需要逐位读取 5 位整数的方法。(即 26505 将被读取为 2 6 5 0 5,并且每个数字都可以用另一种方法单独读取)我无法将整数转换为字符串并读取每个字符,因为我需要用另一种方法读取数字。也有人建议使用 %10 但这不会给我单独的数字。此外,整数需要从左到右逐位读取。我希望这足够清楚,但我对如何完成这一点感到非常困惑,而且我尝试过的一切都不起作用。提供的任何帮助将不胜感激,谢谢。

    while(d>=10){  
    j=code%d;
    d=d/10;
    printDigit(j)
4

4 回答 4

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}

于 2012-10-17T23:36:03.793 回答
3

从左到右获取个位数:-

26505 / 10000 = 2
26505 % 10000 = 6505

6505 / 1000 = 6
6505 % 1000 = 505

505 / 100 = 5
505 % 100 = 5

5 / 10 = 5 

我认为您现在可以实施它。

但是,如果您可以从 right-to-left 遍历,那会更容易,因为那时您的分母将固定为 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 
于 2012-10-17T23:30:37.000 回答
0

你可以这样做:

  1. 您可以创建一个整数数组并将用户输入字符串的每个字符解析为并存储到一个数组中
  2. 那么您可以将此数组用于其他方法。

例如

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]);
    }
于 2012-10-17T23:37:14.853 回答
0

完全懒惰的东西看起来像

final int [] digits = {score % 1000 / 100, score % 100 / 10, score % 10};

例如,如果您知道您的整数永远不会大于 999,这将起作用。

从这个例子中,通过计算整数的下一个十的幂,然后在循环中将数字添加到数组中来改进它以支持任意整数是微不足道的。

于 2012-10-17T23:33:25.523 回答