Считыватель целых чисел Java

Я создаю метод, который должен читать 5-значное целое число по цифре. (т.е. 26505 будет читаться как 2 6 5 0 5, и каждая цифра может быть прочитана отдельно другим методом) Я не могу преобразовать целое число в строку и прочитать каждый символ, потому что мне нужно, чтобы цифры считывались другим методом. Также было предложено использовать %10, но это не дало бы мне отдельных цифр. Кроме того, целое число должно быть прочитано цифра за цифрой слева направо. Я надеюсь, что это достаточно ясно, но я действительно не понимаю, как это сделать, и все, что я пробовал, не работает. Любая предложенная помощь будет оценена по достоинству, спасибо.

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

person user1701604    schedule 17.10.2012    source источник
comment
Почему бы не преобразовать в String и использовать полученные цифры для чтения другим методом? Это не значит, что как только вы их конвертируете, они уничтожаются.   -  person Austin    schedule 18.10.2012
comment
что ты уже испробовал? Кроме того, также было предложено использовать% 10, но это не дало бы мне отдельных цифр. Как это не даст вам отдельные цифры?   -  person Richard JP Le Guen    schedule 18.10.2012
comment
Это домашнее задание? Можете ли вы показать нам, какой код у вас есть?   -  person SomeKittens    schedule 18.10.2012
comment
Ваш вопрос является подмножеством stackoverflow.com/questions/12922377/java-integer-addition который вы спросили вчера. Ответы там применимы здесь.   -  person Steve Kuo    schedule 18.10.2012
comment
@SteveKuo О, дорогой. Даже не заметил этого. :-\   -  person Rohit Jain    schedule 18.10.2012


Ответы (4)


Это вернет массив с целыми цифрами по порядку.

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}

person Zéychin    schedule 17.10.2012

Для получения одиночных цифр слева направо: -

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 
person Rohit Jain    schedule 17.10.2012

Что-то совершенно ленивое будет выглядеть

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

который будет работать, если вы знаете, что ваши целые числа никогда не будут больше 999, например.

Из этого примера легко улучшить его для поддержки произвольных целых чисел, вычислив следующую степень десяти из вашего целого числа, а затем добавив цифры в массив в цикле.

person Sergey    schedule 17.10.2012

Ты можешь это сделать:

  1. вы можете создать целочисленный массив и проанализировать каждый символ строки пользовательского ввода и сохранить в массиве
  2. то вы можете использовать этот массив для другого метода.

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]);
    }
person Pankaj Gadge    schedule 17.10.2012