【问题标题】:Printing Simple Patterns in Java用 Java 打印简单的模式
【发布时间】:2016-10-06 04:30:10
【问题描述】:

有人能解释一下用 Java 打印简单模式背后的基础知识吗?

我将举一个具体的例子。

我希望有人能澄清每一行的作用,以便我更好地了解它的工作原理。任何其他解释的示例(逐行)也将不胜感激!

public static void drawPyramidPattern() {
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5 - i; j++) {
            System.out.print(" ");
        }
        for (int k = 0; k <= i; k++) {
            System.out.print("* ");
        }
        System.out.println();
    }
}

【问题讨论】:

  • 为什么不使用调试器并单步调试?
  • 逐行调试。然后你就会知道发生了什么
  • 把算法写在纸上。在学习的这一点上,您应该单独了解 for 循环和打印语句
  • 拿一张纸和笔维护变量表并通过代码查看更改变量值的控制流程
  • 您的用户名比您的问题更有意义:p 只是在开玩笑

标签: java for-loop nested-loops


【解决方案1】:

通过循环打印任何东西或所有东西只是为了理解执行流程。在您的代码中,如果您开始逐行观察流程,您就会知道它是如何工作的。

如果您了解它的工作原理,您将能够打印任何图案,但基础知识应该很清楚。尝试在每次迭代后打印变量 i、j 和 k 值。查看每个执行周期后如何更改的值,然后查看您应用的逻辑。

您的问题范围有些宽泛,除非缩小范围,否则无法准确回答。我建议逐行运行并观察输出,尝试更多更改,即使它没有任何意义,即使对于所有未来的任务,你也会对循环有很好的理解。如果在尝试自己之后遇到任何问题,请在这里分享,人们已经准备好解决它们。 :)

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    首先你必须对循环、嵌套循环有一个完整的了解,然后才能进行模式设计。

    1) 首先以硬形式运行循环,例如在 Register/on Page 上以了解循环。
    2) 使用调试器识别循环进度。

    【讨论】:

      【解决方案3】:

      如果您从数学角度考虑,循环就是函数。

      单个 for 循环就是 x。

      例子

      for (int i = 0; i < 5; i++) {
      System.out.println("This is function x.");
      }
      

      但是,当您开始嵌套循环时,它是一个更大的功能。另一个 for 循环中的一个 for 循环将是一个函数 x^2

      例如:

      for (int i = 0; i < 5; i++) {
           for (int j = 0; J < 5; j++){
           System.out.println("This is the j loop");
           }
           System.out.println("This is the i loop");
      }
      

      这背后的原因是,为了完成 i 的第一次迭代,必须完成循环内的所有内容。但是, i 循环内部还有另一个循环,因此必须先完成。所以带有 j 的循环必须执行直到它完成。 (在这种情况下 5 次),太好了,现在我们可以增加 i。但是现在我们必须再次单步执行 j!这个过程一直持续到 i 达到

      Output:
      This is the j loop
      This is the j loop
      This is the j loop
      This is the j loop
      This is the j loop
      This is the i loop
      This is the j loop
      This is the j loop
      ....
      

      这将一直持续到 i 达到 5,在这种情况下,它不再满足必要的 i

      【讨论】:

        【解决方案4】:

        首先,由于 i = 0 & 0

        记住 i = 0。

        那么 j = 0;但是 0

        对于第三个循环,k = 0 & 0

        k++,这会将 k 加 1 并检查布尔值;你问自己是 1

        然后你回到外循环。

        【讨论】:

          【解决方案5】:

          //如果矩阵是,此代码打印对角线模式 1 2 3 4 5 6 7 8 9 输出是: 1 4 2 7 5 3 8 6 9

          import java.util.*;
          class DiagonalPattern
          {
              public static void main(String args[])
              {
                  Scanner sc=new Scanner(System.in);
                  int x[][];
                  int i,j,row,col,p,temp=1,last=0;
                  System.out.println("how many array wants to create and size of array");
                  row=sc.nextInt();
                  col=sc.nextInt();
                  x=new int[row][col];
                  System.out.println("Enter  " +row*col+ "  elements of array of array");
                      for(i=0;i<row;i++)
                      {
                      for(j=0;j<col;j++)
                      {
                          x[i][j]=sc.nextInt();
                          last=j;
                      }
                      }
                  for(i=0;i<row;i++)
                      {
                      System.out.println("");
                      int k=i;
                      for(j=0;j<=i;j++,k--)
                      {
                          if(j==col)
                          {
                              break;
                          }
                          else
                          {
                              System.out.print(x[k][j]);  
                          System.out.print(" ");
                          }
                      }
                      }
                  for(p=x.length;p>0;p--,temp++)
                      {
                      System.out.println("");
                      i=x.length-1;
                      int k=i;
                      for(j=temp;j<=last;j++,k--)
                      {
                          System.out.print(x[k][j]);  
                          System.out.print(" ");
                      }
                      }   
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-05-19
            • 2018-08-29
            • 2018-10-19
            • 1970-01-01
            • 2016-08-03
            • 2013-11-16
            • 1970-01-01
            相关资源
            最近更新 更多