在Java中将*打印为三角形?

Gar*_*law 6 java loops

我在Java课程中的任务是制作3个三角形.一个左对齐,一个右对齐,一个居中.我必须为什么类型的三角形创建一个菜单,然后输入需要多少行.三角形必须看起来像这样

*
**
***
****


   *
  **
 ***
****


  *
 ***
*****
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够做左对齐的三角形,但我似乎无法得到另外两个.我试过谷歌搜索但没有出现.有人可以帮忙吗?到目前为止我有这个.

import java.util.*;
public class Prog673A
{
    public static void leftTriangle()
    {
        Scanner input = new Scanner (System.in);
        System.out.print("How many rows: ");
        int rows = input.nextInt();
        for (int x = 1; x <= rows; x++)
        {
            for (int i = 1; i <= x; i++)
            {
                System.out.print("*");
            }
            System.out.println("");
        }
    }
    public static void rightTriangle()
    {
        Scanner input = new Scanner (System.in);
        System.out.print("How many rows: ");
        int rows = input.nextInt();
        for (int x = 1; x <= rows; x++)
        {
            for (int i = 1; i >= x; i--)
            {
                System.out.print(" ");
            }
            System.out.println("*");
        }
    }
    public static void centerTriangle()
    {

    }
    public static void main (String args [])
    {
        Scanner input = new Scanner (System.in);
        System.out.println("Types of Triangles");
        System.out.println("\t1. Left");
        System.out.println("\t2. Right");
        System.out.println("\t3. Center");
        System.out.print("Enter a number: ");
        int menu = input.nextInt();
        if (menu == 1)
            leftTriangle();
        if (menu == 2)
            rightTriangle();
        if (menu == 3)
            centerTriangle();
    }
}
Run Code Online (Sandbox Code Playgroud)

样本输出:

Types of Triangles
1.  Left
2.  Right
3.  Center
Enter a number (1-3):  3
How many rows?: 6

     *
    ***
   *****
  *******
 *********
***********
Run Code Online (Sandbox Code Playgroud)

Ilm*_*nen 15

提示:对于每一行,您需要首先打印一些空格,然后打印一些星星.每行的空格数应减少一个,而星数应增加.

对于居中输出,每行增加星数2.


ysh*_*vit 6

Ilmari Karonen有很好的建议,我只想稍微概括一下.一般来说,在你问"我怎么能让电脑做这个?"之前 问" 该怎么做?"

所以,如果有人给你一个空Word文档并要求你创建三角形,你会怎么做呢?无论您想出什么解决方案,通常都不难将其转换为Java(或任何其他编程语言).它可能不是最好的解决方案,但(希望!)它可以工作,它可能会为您提供更好的解决方案.

所以,例如,也许你会说你输入基数,然后上一行,然后键入下一个最高行,等等.这表明你可以在Java中做同样的事情 - 创建一个字符串列表,从顶部到顶部,然后反转它们.这可能表明你可以按相反的顺序创建它们,然后不必反转它们.然后可能表明你不再需要这个列表了,因为你只是按照相同的顺序创建和打印它们 - 此时你已经基本上提出了Ilmari Karonen的建议.

或者,也许你想出了另一种方式 - 也许你会更直接地想出Ilmari Karonen的想法.无论如何,它应该可以帮助您解决这个问题以及许多其他问题.