方形数字三角形java

时间:2017-09-19 13:28:42

标签: java loops recursion

所以我会尽我所能。我的实验室需要一个java控制台应用程序,用户可以在其中输入1到9之间的任何数字。然后计算机将打印每个数字平方的三角形,并且三角形必须在屏幕的右侧对齐。这是一个例子:

          1
       4  1
    9  4  1
16  9  4  1.

到目前为止,这是我的代码:

import java.util.Scanner;

public class Triangle {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a number between 1 and 9 inclusive:");
        int n = input.nextInt();
        for (int i = 1 ; i <=n; i++) {
            for (int j = n-i; j >=1; j--) {
                System.out.print("    ");
            }
            for (int k = i; k <=i; k++ ) {
                System.out.print("    " + i * i);
            }
            System.out.println("    "); 
        }
    }
}

这是我的输出:

         1
       4  
    9  
16 

我的问题是我可以在每一行重复每个数字并完全填充三角形,但我无法弄清楚如何打印每个先前计数的sqrt而不写一百万个嵌套循环。 我能得到的任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

问题在于第二个循环的循环限制

        for (int k = i; k <=i; k++ ) {

您将 k 初始化为 i ,然后在 k&gt;时停止循环I 即可。这只能在&#34;标准下执行一次&#34;增量。您需要将 k 运行到该行的末尾:

        for (int k = i; k <=n; k++ ) {

答案 1 :(得分:0)

只需稍微调整第二个内循环(粗体更改):

for (int k = i; k >= 1; k--) {
    System.out.printf("  %2d", k * k);
}

缩进的第一个内部循环运行n-i次,因此第二个内部循环必须执行其余操作:i..1

你必须打印内部循环变量k的平方而不是外部循环变量i(在内部循环中不会改变)。

答案 2 :(得分:0)

我必须在外部循环之前调整并添加一些增量变量,并在外部循环中减去内部循环的每个循环的总计数和增量。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a number between 1 and 9 inclusive:");
    int n = input.nextInt();
    int num = 0, temp = 0;
    for (int i = 1 ; i <=n; i++) {
        int l = 0;
        num++;
        temp = num * num;
           for (int j = n-i; j >=1; j--) {
            System.out.print("   ");
           }
           for (int k = 1; k <=i; k++ ) {


            System.out.print("  " + temp);

            l++;
            temp = i -l;
            temp = (int)Math.pow(temp, 2);

                       }

           System.out.println("  "); 

    }






    }

}