【问题标题】:How do you create a java loop that creates a Triangle with squared numbers?你如何创建一个java循环来创建一个平方数的三角形?
【发布时间】:2017-09-25 21:06:00
【问题描述】:

我已广泛搜索有关此主题的信息,但无济于事。我真的在为 Java 循环而苦苦挣扎。

我了解了 For/While 循环的总体思路,但是当真正开始编程时,我得到一个又一个错误...

我已经尝试写出我的程序并理解它的逻辑,但我似乎无法让程序执行我希望它执行的操作。

手头的任务:

使用 Scanner 编写一个程序,要求用户输入 1 到 9(包括 1 和 9)之间的数字 n。程序打印一个有 n 行的三角形。第一行仅包含 1 的平方,并且它是右对齐的。第二行包含 2 的平方和 1 的平方,并且是右对齐的。随后的行包括 3、2 和 1 的正方形,然后是 4、3、2 和 1,依此类推,直到打印 n 行。

假设用户输入 4,程序将下面的三角形打印到控制台

          1
       4  1
    9  4  1
16  9  4  1

对于完整的信用,每列应为 3 个字符宽,并且值应右对齐。

到目前为止,我已经接近了(暂时不包括用户输入,只是试图至少掌握循环方面,然后我会继续努力):

public class MyClass { 
    public static void main(String args[]) {
        int rows = 4; // this is the value that the user will enter for # of rows
        for (int i = 1; i <= rows; i++) {
            for (int j = i; j >= 1; j--) {
                System.out.print((j*j)+" ");
            }
            System.out.println();
        }
    }
}

打印:

 1
 4 1
 9 4 1
 16 9 4 1 

【问题讨论】:

  • 你的三角形是倒置/镜像的吗?您是否尝试反转您的内部循环,以便从 1 开始并递增到 i,而不是从 i 开始并递减到 1?
  • 我不认为它是倒置的,只是没有足够的空白将上述行推入到位。例如,最下面一行是完美的,而不是倒置的。
  • 既然这是一个家庭作业问题,我认为我们不应该给你答案。以下是有关创建右对齐三角形的一些信息:stackoverflow.com/questions/11542113/…
  • 感谢大家的回答!这是我第一次在 stackoverflow 上,我从来没有觉得在家庭作业问题上寻求帮助是正确的,但是出于某种原因,这个真的让我很开心。循环发送给我一个循环... (;

标签: java loops for-loop while-loop


【解决方案1】:

你有两个问题。

首先,您需要使用左侧填充的数字来生成 3 个字符的空格内的数字。看System.out.printf("%3d", ...)

其次,您需要打印出额外的空白列。第一行 3 个空白列,第二行 2 个空白列,第三行 1 个空白列,最后一行 0 个空白列。听起来像是另一个内部循环。

【讨论】:

    【解决方案2】:
    int rows = 4; // this is the value that the user will enter for # of rows
    
    for (int i = rows; i > 0; i--) {
        for (int j = rows; j > 0; j--)
            System.out.print((rows - j + 1) < i ? "   " : String.format("%3d", j * j));
        System.out.println();
    }
    

    【讨论】:

    • 谢谢先生。老实说,直到在阅读本文之前偶然发现它们之前,我都没有得到有关格式的信息。你真的帮了我,谢谢。在一般的循环方面,我不只是在寻求我真正需要帮助的每个人的答案。
    【解决方案3】:

    您实际上需要打印一个方桌,而不是三角形。只是表格中的一些单元格会被空格填充。

    这意味着你的算法应该是这样的:

    对于从 1 到 n 的行 for col from n to 1 /* 注意:不是从行到 1 */ if col

    【讨论】:

    • 我真的不知道这是一张方桌,谢谢你的信息。我一直在努力解决循环问题。
    【解决方案4】:
    import java.util.Scanner;
    public class TriangleOfSquares {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
    
            System.out.print("Enter an integer between 1 and 9: ");
            int n = input.nextInt();
            for (int i = n; i > 0; i--) {
                for (int j = n; j > 0; j--)
                    System.out.print((n - j + 1) < i ? "   " : String.format("%3d", j * j));
                System.out.println();
            }
    
        }
    
    }
    

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2016-07-16
    • 2015-03-21
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多