这个是对我之前的一个问题的解答,也是对我有一个博客的补充说明。我之前搜了好久,都没在CSDN上看到这类题目的讲解,于是决定自己将这个题目研究明白,如果有更好的解决方法,可以讨论讨论。
题目描述:输入两个数n和m,然后输出n个m,例如n=5,m=6,输出555555。
代码如下(代码里有对题目的解析,我这里就不再赘述了):
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int n = sc.nextInt();
int m = sc.nextInt();//定义循环的次数
for (int i = 1; i <= m - 1; i++) {
if (i == 1) {/**
进行判断,当i==1的时候(看i的初始值,如果i的初始值为0;就判断i是不是等于零)
此时的算法为n = (n * 10) + n
例如:n = 2*10+2 == 22。
*/
n = (n * 10) + n;
continue;//continue跳出当前结果,继续当前的循环;break结束当前循环。
} else {
/**
这里如果还用n = (n * 10) + n,就会呈现出 n = 22*10+22 ==242的结果,
但是这个结果不是我们要的,所以将+n,改成n%10,
效果是这样子的 n = 22*10+22%10 == 220+2 == 222,是我们想要的结果。
*/
n = (n * 10) + n % 10;
}
}
System.out.println(n);
}
}
}
代码运行结果截图: