【问题标题】:Patterns using for loops使用 for 循环的模式
【发布时间】:2013-10-19 02:24:28
【问题描述】:

我应该根据用户输入的数字创建此模式。用户输入的数字对应于每行的行数和星数。

    * 
   ** 
  *** 
 **** 
*****

有人告诉我只能使用嵌套的 for 循环,而不能使用 printf()。这只是我正在处理的代码的一部分。

for (int row = 1; row <= size; row++) {
            for (int column = 1; column <row; column++) {
                System.out.print(" ");
            }
            for (int column = 1; column <= row; column++) {
            System.out.print("*");
        }
        System.out.println();

    }

我似乎无法如上所示输出。相反,我得到了这个:

*
 **
  ***
   ****
    *****

有人可以给我一个关于我应该做什么的提示吗?我已经花了2个小时,但仍然无法弄清楚。

【问题讨论】:

    标签: java nested nested-loops


    【解决方案1】:

    对于每一行,您应该最多输出size 个字符;所以如果size = 5,在第三行,如果输出三颗星,那么你需要size-row空格=> 5 - 3 = 2。

    在代码中:

    for (int row = 1; row <= size; row++) {
        for (int column = 1; column <= size-row; column++) {
            System.out.print(" ");
        }
        for (int column = 1; column <= row; column++) {
            System.out.print("*");
        }
        System.out.println();
    }
    

    示例:http://ideone.com/hC5HDQ

    【讨论】:

    • 感谢您的帮助:)。
    【解决方案2】:

    您想从更多空格开始,然后删除它们直到没有更多空格。但是在删除空格的同时,您还需要添加额外的“*”。因此,对于删除的每个空格,您将添加一个“*”

    【讨论】:

      【解决方案3】:

      试试这个

      int i=5;
      
      do{
          int j=5;
      
          while(j>i){
              System.out.print("*");
              j--;
          }
          System.out.println();
          i--;
      
      }while(i>0);
      

      【讨论】:

        猜你喜欢
        • 2021-05-02
        • 2021-07-06
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 1970-01-01
        • 1970-01-01
        • 2020-04-15
        相关资源
        最近更新 更多