【问题标题】:I am trying to make a pattern (triangle in java)我正在尝试制作一个模式(java中的三角形)
【发布时间】:2020-07-25 23:02:08
【问题描述】:

我正在尝试在 java 中制作这种模式:

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

这是我写的代码:

package practise;
import java.util.Scanner;
public class PatternsUsingLoop {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();       
        for(int j=1;j<=n;j++) { 
            for(int k=n;k>=1;k--) {

                System.out.print("* ");
            }
            System.out.println();
        }
    }
}

请告诉我错误

【问题讨论】:

  • 嘿!显示代码的当前输出将是一件好事。
  • Krish,代码现在在做什么?它是否运行,如果运行,输出是什么?你希望它如何工作(看起来你想输入一些星星开始)。也许你可以编辑问题来改进它,这样我们就可以给你你需要的答案。

标签: java loops for-loop iteration


【解决方案1】:

还有很多方法可以解决这个问题。最简单的修复方法之一是将内部循环替换为以下内容:

for (int k = (n - j) + 1; k >= 1; k--)

由于要在第一行打印n*s的数量,n - 1在第二行的*s的数量等等,所以k的值必须初始化为@ 987654327@ 当j1n - 1j2 等等。

实现此要求的其他一些方法如下:

答。

for (int j = n; j >= 1; j--) {
    for (int k = j; k >= 1; k--) {
        System.out.print("* ");
    }
    System.out.println();
}

B.

for (int j = n; j >= 1; j--) {
    for (int k = 1; k <= j; k++) {
        System.out.print("* ");
    }
    System.out.println();
}

...还有更多

【讨论】:

    【解决方案2】:

    这是一个非常小的错误,第一个循环是正确的,但在内部循环中,您再次打印 n 颗星(从 n 到 1)。 您需要为每个循环打印 (n - i + 1) 颗星。

    使用此更改:

    ...
    ...
    int n = sc.nextInt();       
            for(int j=1;j<=n;j++) { 
                for(int k=n-j+1;k>=1;k--) {
    
                    System.out.print("* ");
                }
                System.out.println();
            }
    ...
    ...
    

    //... 表示相同的代码 //

    【讨论】:

    • i 定义在哪里?不建议发布未经测试的代码。
    【解决方案3】:

    问题是你没有尝试调试你的代码。 要调试您的代码,请尝试在每行的开头打印出您正在使用的变量,以查看它们是否符合您的预期。您已经(希望)考虑了代码,并且您认为每个变量将出现在每一行,所以您错过了一些东西,您有一个错误。

    例如试试这个:

    package practise;
    import java.util.Scanner;
    public class PatternsUsingLoop {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();       
            for(int j=1;j<=n;j++) { 
                System.out.print("j: " + j + " n: " + n);
                for(int k=n;k>=1;k--) {
                    System.out.print("* ");
                }
                System.out.println();
            }
        }
    }
    

    当你运行时,你会得到

    j: 1 n: 5* * * * * 
    j: 2 n: 5* * * * * 
    j: 3 n: 5* * * * * 
    j: 4 n: 5* * * * * 
    j: 5 n: 5* * * * * 
    

    这显示了其他几个答案所指出的,n 不会改变,因此输出始终是 5 星。

    现在你可以找出答案了。 (提示:j 从 0 开始,使用 k=n-j)

    【讨论】:

      【解决方案4】:

      您不会减少内部循环中的完成条件。这将有效:

          Scanner sc = new Scanner(System.in);
          int n = sc.nextInt();
          for(int row=0;row<n;row++) { 
              for (int column = 0; column < n-row; column++) {
                  System.out.print("* ");
              }
              System.out.println();
          }
      

      【讨论】:

        猜你喜欢
        • 2020-01-28
        • 2017-06-29
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多