特定模式作为模运算符的输出
Specific pattern as output with modulo operator
任务是使用 one 循环 and 模运算符生成以下模式。
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);
}
}
}
您需要使用 / 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);
}
}
Eran 的 是正确的,但是硬编码了数字的顺序(它只适用于 10000-99999 范围内的数字)。但是,我们可以通过注意到数字的长度(十进制)等于数字的 log10 来概括它。像
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);
}
任务是使用 one 循环 and 模运算符生成以下模式。
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);
}
}
}
您需要使用 / 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);
}
}
Eran 的
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);
}