根据输入读取正整数大小和绘图编号三角形

时间:2016-09-04 15:40:25

标签: java

我是Java的新手,并且一直试图搞砸一些基本的东西来增加我对语言的理解。这是我正在努力实现的目标:

编写程序以读取正整数大小,然后根据此输入绘制三角形。假设您键入数字5,您应该绘制一个三角形,如下所示(第1行打印4个空格,第5行;第2行打印3个空格,数字4和5等):

      5
    45
  345
2345

到目前为止,我有这个:

 import java.util.Scanner;

 class Triangle
 {
  public static void main(String [] args)
   {
        int number, space;

      Scanner in=new Scanner(System.in);

      System.out.println("Enter The Number:");
      number = in.nextInt();


         for (int i=1; i<=number; i++)
         {
             for (int j = number; j>=1; j--)
             {
               if (j>i) 
                   System.out.print("_");
               else
                   System.out.print(j);

         }
         System.out.println();}}}

我知道我很接近,但是不想搞砸任何东西并最终从解决方案中走出来。看来我只需要切换我的开始和结束数字。

如果有人能提供帮助,我们将不胜感激。

4 个答案:

答案 0 :(得分:1)

我会使用以下两个嵌套循环:

for (int i=number-1; i >= 0; --i) {
    String spaces = new String(new char[i]).replace("\0", " ");
    String nums = "";
    for (int j=i+1; j <= number; ++j) {
        nums += String.valueOf(j);
    }

    System.out.println(spaces + nums);
}

答案 1 :(得分:0)

我在评论中已经完成并提到了一些变化,它完美无缺!

import java.util.Scanner;

 class Triangle
 {
  public static void main(String [] args)
   {
        int number, space;

      Scanner in=new Scanner(System.in);

      System.out.println("Enter The Number:");
      number = in.nextInt();


         for (int i=1; i<=number; i++)
         {
             for (int j = number; j>=1; j--)
             {
               if (j>i) 
                   System.out.print(" ");           //print space instead of _
               else
                   System.out.print(number+1-j);    //print number+1-j which will be you decreasing Sequence

         }
         System.out.println();}}}

答案 2 :(得分:0)

修复代码:而不是打印出j计数器:

System.out.print(j);

您想要打印

System.out.print(number -(j-1));

另一种解决方案:

 public static void main(String [] args) {

     int number =5, numberOfSpaces;

      for (int row=1; row<= number ; row++) {

          numberOfSpaces = number - row;

          for (int column=1; column<= number ; column++) {

              if(column<=numberOfSpaces) {

                System.out.print(" ");

              }else {

                 System.out.print(column);
              }
          }

          System.out.println();
      }

   }

更短版本完全相同:

 public static void main(String [] args) {

     int number =5, numberOfSpaces;

    for (int row=1; row<= number ; row++) {

          numberOfSpaces = number - row;

          for (int column=1; column<= number ; column++) {

                System.out.print( (column<=numberOfSpaces) ? " " : column);
          }

          System.out.println();
     }
}

答案 3 :(得分:0)

只是你想要的方式:易于理解。享受!

 import java.util.*;
    class Triangle
    {
        public static void main(String [] args)
        {
            int number, space;
            Scanner in=new Scanner(System.in);
            System.out.println("Enter The Number:");
            number = in.nextInt();
            for (int i=1; i<=number; i++)
            {
                for (int j = 1; j<=number; j++)
                {
                    if (j>number-i) /**the only problem you were having in your code was that it was printing it in reverse.. I reversed the loop and modified` to do so*/
                        System.out.print(j);
                    else
                        System.out.print(" ");
                }
                System.out.println();
            }
        }
    }