1

我正在尝试打印

****1
***22
**333
*4444
55555

因为我是java的初学者。我只是打印

11111
22222
33333
44444
55555        

我的解决方案:

for (int i = 1 ; i <= 5 ; i++){
    for(int j = 1 ; j <= 5 ; j++){
        System.out.print(i);
    }
    System.out.println();
}

****
***
**
*

我的解决方案:

 for(int i=1;i<=4;i++){
     for(int j=1;j<=5-i;j++){
         System.out.print("*");
     }
     System.out.println();
 }

我尝试将它们合并在一起,但我不知道该怎么做。我知道我很接近但我被困在这里。

4

5 回答 5

3

在尝试解决问题之前,您必须了解问题。在你的情况下,

  • 有两个循环,因为你有列和行
  • 生成列的循环:
    • 必须在生成线条的那个里面
    • 必须知道是否打印星号或数字
  • 生成线条的循环
    • 必须知道应该在该行上打印哪个数字
    • 必须知道该行应该打印多少颗星
于 2013-02-22T16:07:01.357 回答
0

这是一个简单的方法来做到这一点。

for (int i = 1; i <= 5; i++) {
    for (int j = i; j < 5; j++)
        System.out.print("*");
    for (int k = 0; k < i; k++)
        System.out.print(i);
    System.out.println();
}
于 2013-03-28T04:24:05.953 回答
-1
    int k = 4;
        for (int i = 1 ; i <= 5 ; i++){
            System.out.println(); 
            for(int j = 1 ; j <= 5 ; j++){
               if(j<=k){
                  System.out.print("*"); 
               }else{
                  System.out.print(i);
                  k--;
               }
            }
        }
于 2013-02-22T16:06:56.367 回答
-3

你应该明白i,j变量代表什么。找到规律,你就很容易解决这个问题。

for(int i=1;i<=5;i++){
    for(int j=1;j<=5-i;j++){
        System.out.print("*");
    }
    for (int j=5-i+1;j<=5;j++){
        System.out.print(j);
    }
    System.out.println();
}
于 2013-02-22T16:12:59.887 回答
-3
       int k = 4;

        for (int i = 1 ; i <= 5 ; i++){
            System.out.println(); 
            for(int j = 0 ; j <= 4 ; j++){
               if(j<k){
                  System.out.print("*"); 
               }else{
                  System.out.print(i);
                  if(j==4){
                      k--;
                  }
               }

            }
        }
于 2013-02-22T16:20:13.527 回答