通过模运算符输出的特定模式

时间:2019-04-28 11:01:34

标签: java modulo

任务是使用一个循环模运算符生成以下模式。

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 个答案:

答案 0 :(得分:4)

您需要用/ 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);
    }
}

答案 1 :(得分:0)

Eran的answer是正确的,但是对数字顺序进行硬编码(仅适用于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);
}