代码之家  ›  专栏  ›  技术社区  ›  Nobody

Java中带while循环的三角形模式

  •  -1
  • Nobody  · 技术社区  · 2 年前

    您好,我的任务是制作一个三角形生成器,其中包含用户希望在java中使用的符号和行数,而它是这样工作的。

    
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    

    但我想要这样

           *
          **
         ***
        ****
       *****
      ******
     *******
    ********
    

    这是我的密码

    import java.util.Scanner;
    import java.lang.Math;
    
    class Main {
     public static void main(String args[]){
      
      ////////////OBJECTS///////////////////////
    
      Scanner sc = new Scanner(System.in);
      Scanner sc2 = new Scanner(System.in);
      ///////////////////////INPUTS//////////
    
      System.out.println("Please Enter how many rows do you want");
      int inp = sc.nextInt();
      
      System.out.println("Which symbol do you want");
      String str2 = sc2.nextLine();
     ////////////////VARIABLES///////////////////
    
      int c = 0; 
      String str = "";
      String str3 = "";
      System.out.println("=====================");
    
      ///////LOGIC/////////////////////////////
    
      while(c != inp){
       str = str+str2; 
       System.out.println(str);
       c=c+1;
      }
    
    ////////////////////////////////////////////
      
     }
     
    }
    
    

    你知道我如何用这种逻辑来解决它吗

    2 回复  |  直到 2 年前
        1
  •  2
  •   Elliott Frisch    2 年前

    你只需要一个 Scanner ,如果使用 String.repeat(int) .第一重复空间 inp - c 多次,然后重复你的“符号” c 时报。喜欢

    Scanner sc = new Scanner(System.in);
    System.out.println("Please Enter how many rows do you want");
    int inp = sc.nextInt();
    sc.nextLine();
    System.out.println("Which symbol do you want");
    String symbol = sc.nextLine(); // You had a good name in the prompt.
    int c = 1;
    System.out.println("=====================");
    while (c <= inp) {
        System.out.print(" ".repeat(inp - c));
        System.out.println(str2.repeat(c));
        c++;
    }
    

    示例输出

    Please Enter how many rows do you want
    5
    Which symbol do you want
    *
    =====================
        *
       **
      ***
     ****
    *****
    
        2
  •  1
  •   Gurkirat Singh Guliani    2 年前

    对于图案的每一行,可以在空白和要打印的字符之间形成图案。

    如果输入为5,您可以看到空格在减少(,第一行4,第二行3),字符在增加(第一行1,第二行2),空格和字符(*)的数量之和是常量(等于5) 因此,对于每一行,必须多次打印空白和字符。

    此外,您不需要2个扫描仪对象来读取输入。读取整数后,可以使用scan。next()读取最后一个字符( why? )

    class Main {
        public static void main(String args[]) {
    
            //////////// OBJECTS///////////////////////
    
            Scanner sc = new Scanner(System.in);
            // Scanner sc2 = new Scanner(System.in);
            /////////////////////// INPUTS//////////
    
            System.out.println("Please Enter how many rows do you want");
            int inp = sc.nextInt();
            sc.nextLine();
            // sc.next();
            System.out.println("Which symbol do you want");
            String str2 = sc.nextLine();
            //////////////// VARIABLES///////////////////
    
            int c = 1;
            String str = "";
            String str3 = "";
            System.out.println("=====================");
    
            /////// LOGIC/////////////////////////////
    
             int i = 1;
        int j = 0;
        while (i <= inp) {
            while (j < inp - i) {
                System.out.print(" ");
                j++;
            }
            while (j < inp) {
                System.out.print(str2);
                j++;
            }
            System.out.println();
            j = 0;
            i++;
        }
    
            sc.close();
            ////////////////////////////////////////////
    
        }
    
    }
    

    输出是

    Please Enter how many rows do you want
    5
    Which symbol do you want
    *
    =====================
        *
       **
      ***
     ****
    *****