我一直在尝试for循环的不同变体,并且不知道如何制作这些模式:
模式
1
121
12321
1234321
我的代码如下,但不像上面的示例那样工作。
for (int i = 1 ; i <= rows ; i++) {
for (int j = (rows + 1 - i) ; j > 0 ; j-- ) {
System.out.print(j);
}
System.out.print("\n");
}
答案 0 :(得分:6)
您的代码仅打印每行的后缀,您缺少为每行写12....i
。
另外,循环应该从i
开始,而不是从rows-i+1
开始。
for (int i = 1 ; i <= rows ; i++) {
//add an inner loop that prints the numbers 12..i
for (int j = 1 ; j < i ; j++ ) {
System.out.print(j);
}
//change where j starts from
for (int j = i ; j > 0 ; j-- ) {
System.out.print(j);
}
System.out.println(""); //to avoid inconsistency between different OS
}
答案 1 :(得分:4)
首先注意11 * 11 = 121,111 * 111 = 12321,等等。
那么10 n - 1是一个由n 9&#39组成的数字,所以(10 n - 1)/ 9由n 1&#组成39; S
所以我们得到:
int powerOfTen = 1;
for (int len = 0; len < 5; len++)
{
powerOfTen = powerOfTen*10;
int ones = (powerOfTen-1)/9;
System.out.println(ones*ones);
}
答案 2 :(得分:3)
代码解释了一切!
public static void main(String[] args) {
String front = "";
String back = "";
int rows = 5;
for (int i = 1; i <= rows; i++) {
System.out.println(front+i+back);
front += i;
back = i + back;
}
}
答案 3 :(得分:1)
试试这个:它可能看起来太多循环,但却易于理解和有效。
public static void main(String[] args) {
int rows=5;
int i,j;
for(i=1;i<=rows;i++)
{
/*print left side numbers form 1 to ...*/
for(j=1;j<i;j++)
{
System.out.printf("%d", j);
}
/*Print the middle number*/
System.out.printf("%d", i);
/*print right numbers form ... to 1*/
for(j=i-1;j>0;j--)
{
System.out.printf("%d", j);
}
System.out.println("");
}
}
答案 4 :(得分:1)
int n=0;
for(int m =0; m<=5; m++){
for(n= 1;n<=m;n++){
System.out.print(n);
}
for(int u=n;u>=1;u--){
System.out.print(u);
}
System.out.print("");
}