【问题标题】:triangle of square numbers java平方数三角形java
【发布时间】:2018-02-28 07:38:06
【问题描述】:

所以我会在这里尽可能具体。我的实验室需要一个 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。 我将不胜感激。

【问题讨论】:

    标签: java loops recursion


    【解决方案1】:

    只有第二个内循环需要稍微调整一下(粗体的变化):

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

    缩进的第一个内部循环运行n-i 次,所以第二个内部循环必须完成其余的工作:i..1

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

    【讨论】:

      【解决方案2】:

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

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

      你将k初始化为i,然后在k > i时停止循环。这只能在“标准”增量下执行一次。您需要运行 k 到行尾:

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

      【讨论】:

        【解决方案3】:

        我必须在外循环之前调整并添加更多增量变量,在外循环中也要从总计数中减去内循环每个循环的增量。

        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("  "); 
        
            }
        
        
        
        
        
        
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-12
          • 2011-03-19
          • 2014-11-18
          • 1970-01-01
          • 2021-11-07
          • 2020-02-01
          • 2016-02-05
          相关资源
          最近更新 更多