使用两个嵌套for循环和构造函数打印出重复模式

时间:2012-02-12 19:48:21

标签: java for-loop constructor nested-loops

我必须编写一个程序,它接受一个命令行参数n并打印出一个带有交替空格和星号的模式(如下所示)。至少使用两个嵌套for循环和一个构造函数来实现模式(下面显示的图像如下所示)。

这是我已经尝试过的代码,没有运气。我理解如何使用单个for循环执行此操作,但不是嵌套。我也不确定如何将构造函数与该程序集成。

This is how the image should look: * * * *
                                    * * * *
                                   * * * *
                                    * * * *
public class Box {
     public static void main(String[] args) {

         for (int i=1; i<2; i++) {
             System.out.println("* " + "* " + "* " + "* ");

             for (int j=0; j<i; j++) {
                 System.out.print(" *" + " *" + " *" + " *");

             }
         }
     }
 }

4 个答案:

答案 0 :(得分:2)

我想这是一个家庭作业问题,所以我不会给你任何代码:)你的问题是你用外循环和内循环打印出整行。使用外部循环绘制每一行并使用内部循环在每行中绘制每个星号。因此,外部循环用于行,内部循环用于列。

答案 1 :(得分:1)

轻微修改波希米亚人的答案。外部for循环负责打印行。内部循环在每行上打印重复的字符。构造函数只需设置n字段,该字段控制您打印的行数。 main方法创建一个新对象并调用其唯一的方法。

public class Box {

private static int n; 

public Box(int n){
    this.n = n;
}

public static void doMagic() {
    for (int row = 0; row < n; row++) {
        if(row%2==1)
            System.out.print(" ");
        for (int col = 0; col < n; col++) {
            System.out.print("* ");
        }
        System.out.println();
    }
}
   public static void main(String[] args) {
    new Box(4).doMagic();
 } 
}

答案 2 :(得分:0)

  • 为循环变量指定合理的名称。
  • 考虑每种类型的每次迭代应该做什么

试试这个:

public static void main(String[] args) {
     for (int row = 0; row < 4; row++) {
         // Not sure if you really meant to indent odd rows. if not, remove if block
         if (row % 2 == 1) {
            System.out.print(" "); 
         }
         for (int col = 0; col < 4; col++) {
             System.out.print("* ");
         }
         System.out.println();
     }
 }

输出:

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

答案 3 :(得分:0)

在外部for循环中,您可以控制要打印的行数,并选择是否打印“*”或“*”。在内部循环中,您将打印所选字符串的次数与您拥有的列数相同。