Почему следующий код не зацикливается, чтобы распечатать цифры введенного числа? - PullRequest
0 голосов
/ 27 сентября 2019

Я МОГУ ТОЛЬКО ИСПОЛЬЗОВАТЬ ОСНОВНЫЕ ПЕРЕМЕННЫЕ ТИПЫ (ИСПОЛЬЗУЕМЫЕ В КОДЕКСЕ), БЕЗ МОДЕЛЕЙ И Т.Д.Я хочу, чтобы этот код зациклился, пока он не напечатает цифры.Например, если введено число 12345, я хочу, чтобы оно печатало

1 
2
3
4
5

Однако оно печатает только

1
0
0
0
0

. Любое введенное число может содержать только 5 цифр.

int num = 0;
System.out.println("Enter an integer: ");
num = linput.nextInt();
int n = 5; //should be 5 digits in inputted number;
int i = num;
for (n = 5; n >= 1; n--) {
    if (n > 0) {
        for (int p = n; p > 1; p--) {
            i = i / 10;
        }
        int samplei = I;
        i = i - (10 * (samplei / 10));
        if (i < 0) {
            i = (i * -1);
        }
        System.out.println(i);
    }
}

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Ваше решение кажется излишне сложным?

System.out.println( "Enter an integer: " );
int num = linput.nextInt();
("" + num).chars().forEach( c -> System.out.println( (char)c ) );

Я что-то пропустил?

… тогда Вы не можете использовать потоки?? 1011 *

int num = linput.nextInt();    
String s = ("" + num);
for( int i = 0; i < s.length(); i++ )
  System.err.println( s.charAt( i ) );

… все еще недостаточно сложно?

public void printTheDigits( int n ) {
  if( (n % 10) == 0 )
    return;
  printTheDigits( n / 10 );
  System.err.println( n % 10 );
}

int num = linput.nextInt();
printTheDigits( num );
0 голосов
/ 27 сентября 2019

1 - Использование вложенного цикла для каждой простой задачи - очень плохая идея.Всегда пытайтесь использовать не вложенный цикл.

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

3 - ниже приведен общий коди будет работать для любой длины (длина номера).

    int num = 12345;
    ArrayList<Integer> al = new ArrayList<Integer>();
    int count = 0;
    while(num != 0) {
        al.add(num%10);
        num = num/10;
        count++;
    }
    for(int i = count-1; i >=0 ; i--) {
        System.out.println(al.get(i));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...