Конкретный шаблон как вывод с оператором по модулю - PullRequest
1 голос
/ 28 апреля 2019

Задача состоит в том, чтобы с помощью one loop и modulo-operator следующий шаблон.

12345
23451
34512
45123
51234

У меня есть решение, но я думаю, что оно не решается хорошим способом. Поэтому я ищу более элегантный способ решения проблемы без ущерба для требований.

class Test{


    public static void main(String[] args){
        int num = 12345;
        System.out.println(num);
        for(int i = 0; i < 4; i++){
            int tmp = num%10000+21106+i;
            System.out.println(tmp);
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 28 апреля 2019

Вам нужно извлечь первую (самую значимую) цифру с помощью / 10000 and, остальные цифры - с помощью % 10000.Затем вы можете построить следующий номер в серии.

public static void main(String[] args){
    int num = 12345;
    System.out.println(num);
    for(int i = 0; i < 4; i++) {
        int first = num / 10000;
        int last4 = num % 10000;
        num = last4 * 10 + first;
        System.out.println(num);
    }
}
0 голосов
/ 28 апреля 2019

Eran's ответ правильный, но жестко задает порядок номера (он будет работать только для чисел в диапазоне 10000-99999).Но мы можем обобщить это, заметив, что длина числа (в десятичной дроби) равна log 10 числа.Что-то вроде

int num = 123456;
System.out.println(num);
int log10 = (int) Math.log10(num);
for (int i = 0; i < log10; i++) {
    int pow10 = (int) Math.pow(10, log10);
    int first = num / pow10;
    int last4 = num % pow10;
    num = last4 * 10 + first;
    System.out.println(num);
}
...