Печать *как треугольники в Java?

мое задание в моем курсе Java-сделать 3 треугольника. Один выровнен слева, один выровнен справа и один центрирован. Я должен сделать меню для какого типа треугольника, а затем ввести, сколько строк требуется. Треугольники должны выглядеть так

*
**
***
****


   *
  **
 ***
****


  *
 ***
*****

до сих пор я смог сделать левый выровненный треугольник, но я не могу получить два других. Я попробовал погуглить, но ничего не получилось. Кто-нибудь может помочь? У меня это до сих пор.

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

образец Вывод:

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

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

20 ответов


подсказка: для каждой строки, вы должны первый печать некоторых пробелов и затем печать некоторых звезд. Количество пробелов должно уменьшаться на один ряд, а количество звезд должно увеличиваться.

для центрированного вывода увеличьте количество звезд на два для каждой строки.


Илмари Karonen имеет хороший совет, и я просто хочу обобщить немного. В общем, прежде чем вы спросите: "как я могу заставить компьютер сделать это?"спроси "как бы Я этого?"

Итак, если кто-то дал вам пустой документ Word и попросил вас создать треугольники, как бы вы это сделали? Какое бы решение вы ни придумали, обычно нетрудно перевести его на Java (или любой другой язык программирования). Возможно, это не лучшее решение, но (надеюсь!) это сработает, и это может указать вам на лучшее решение.

Так, например, может быть, вы скажете, что вы наберете базу, затем пойдете вверх по строке, затем введите следующую самую высокую строку и т. д. Это предполагает, что вы можете сделать то же самое в Java-создать список строк, base-to-top, а затем отменить их. Это может означать, что вы можете просто создать их в обратном порядке, а затем не нужно их отменять. А потом ... --1-->что может предложить, что вам не нужен список больше, так как вы будете просто создавать и печатать их в том же порядке-и в этот момент Вы пришли к совету Илмари Каронен.

или, может, вы придумаете другой способ сделать это ... может быть, вы придумаете идею Илмари Karonen более непосредственно. Несмотря на это, он должен помочь вам решить эту и многие другие проблемы.


package apple;

public class Triangle
{
private static final int row = 3;

public static void main(String...strings){
    printLeftTrangle();
    System.out.println();
    printRightTrangle();
    System.out.println();
    printTrangle();
}

/*  Pattern will be
     *
     **
     ***
     ****
 */

public static void printLeftTrangle(){

    for(int y=1;y<=row;y++){
     for(int x=1;x<=y;x++)
         System.out.print("*");
     System.out.println();
    }
}

/*  Pattern will be
        *
       **
      ***
     ****
 */
public static void printRightTrangle(){
    for(int y=1;y<=row;y++){
        for(int space=row;space>y;space--)
            System.out.print(" ");
        for(int x=1;x<=y;x++)
            System.out.print("*");
        System.out.println();
    }
}

/*  Pattern will be
     *
    ***
   *****
*/

public static void printTrangle(){

    for(int y=1, star=1;y<=row;y++,star +=2){
        for(int space=row;space>y;space--)
            System.out.print(" ");
        for(int x=1;x<=star;x++)
            System.out.print("*");
        System.out.println();
    }
}
}

левый алингед треугольник- * **



from above pattern we come to know that-
1)we need to print pattern containing n rows (for above pattern n is 4).
2)each  row contains star and no of stars i each row is incremented by 1.
So for Left alinged triangle we need to use 2 for loop.
1st "for loop" for printing n row.
2nd  "for loop for printing stars in each rows. 


 Code for  Left alinged triangle-

 public static void leftTriangle()
{
       /// here  no of rows is 4
 for (int a=1;a<=4;a++)// for loop for row
 {   
 for (int b=1;b<=a;b++)for loop for column
 {
 System.out.print("*");
 }

System.out.println();}
}

правый алингед треугольник- *
**



from above pattern we come to know that-
1)we need to print pattern containing n rows (for above pattern n is 4).
 2)In each  row we need to print spaces followed by a star & no of spaces            in each row is decremented by 1.
 So for Right alinged triangle we need to use 3 for loop.
 1st "for loop" for printing n row.
 2nd  "for loop for printing spaces.
 3rd "for loop" for printing stars.

Code for Right alinged triangle -

public void rightTriangle()
{
    // here 1st print space and then print star
  for (int a=1;a<=4;a++)// for loop for row
 { 
 for (int c =3;c>=a;c--)// for loop fr space
 {  
 System.out.print(" ");
 }
 for (int d=1;d<=a;d++)// for loop for column
 { 
 System.out.print("*");   
 }
 System.out.println(); 
 }
 }

Треугольник Центр - *
* *



сверху шаблон мы узнаем, что- 1) Нам нужно напечатать шаблон, содержащий n строк (для вышеуказанного шаблона n равно 4). 2) внутренне в каждой строке нам нужно напечатать пробелы, за которыми следует звезда, а затем снова пробел . Нет пробелов в каждая строка в начале уменьшается на 1. Итак, alinged треугольника нужно использовать 3 цикла. 1-й "for loop" для печати n строк. 2-ой " для петли для печатая космосов. 3-й "для петли" для печати звезд.

код для центрального треугольника -

public  void centerTriangle()
{   
for (int a=1;a<=4;a++)// for lop for row
{   
for (int c =4;c>=a;c--)// for loop for space
{  
System.out.print(" ");
}
for (int b=1;b<=a;b++)// for loop for column
{
System.out.print("*"+" ");
}
System.out.println();}
}

КОД ДЛЯ ПЕЧАТИ ВСЕХ 3 МОДЕЛЕЙ - открытый класс space4 { публичная статическая пустота leftTriangle() { /// здесь нет строк 4 for (int a=1;A for (int b=1;b

System.out.println();}
}

public static void rightTriangle()
{
    // here 1st print space and then print star
  for (int a=1;a<=4;a++)// for loop for row
 { 
 for (int c =3;c>=a;c--)// for loop for space
 {  
 System.out.print(" ");
 }
 for (int d=1;d<=a;d++)// for loop for column
 { 
 System.out.print("*");   
 }
 System.out.println(); 
 }
 }

public static void centerTriangle()
{   
for (int a=1;a<=4;a++)// for lop for row
{   
for (int c =4;c>=a;c--)// for loop for space
{  
System.out.print(" ");
}
for (int b=1;b<=a;b++)// for loop for column
{
System.out.print("*"+" ");
}
System.out.println();}
}
public static void main (String args [])
{
space4 s=new space4();
s.leftTriangle();
s.rightTriangle();
s.centerTriangle();
}
}

для правильного треугольника, для каждой строки:

  • во-первых: вам нужно напечатать пробелы от 0 до rowNumber - 1 - i.
  • второе: вам нужно напечатать \* С rowNumber - 1 - i до rowNumber.

Примечание: i - индекс строки от 0 до rowNumber и rowNumber - количество строк.

для центрального треугольника: он выглядит как "правый треугольник" плюс добавление \* в соответствии с индексом строки (например : в первой строке вы добавите ничего, потому что индекс равен 0, во второй строке вы добавите один " * " и так далее).


/ / Это для нормального треугольника

for (int i = 0; i < 5; i++)
        {
            for (int j = 5; j > i; j--)
            {
                System.out.print(" ");
            }
            for (int k = 1; k <= i + 1; k++) {
                System.out.print(" *");
            }
            System.out.print("\n");
        }

/ / Это для левого треугольника, просто удалено пространство перед печатью *

for (int i = 0; i < 5; i++)
        {
            for (int j = 5; j > i; j--)
            {
                System.out.print(" ");
            }
            for (int k = 1; k <= i + 1; k++) {
                System.out.print("*");
            }
            System.out.print("\n");
        }

1) Нормальный треугольник

package test1;


 class Test1 {

     public static void main(String args[])
     {
         int n=5;
     for(int i=0;i<n;i++)
     {

         for(int j=0;j<=n-i;j++)
         {

             System.out.print(" ");
         }

         for(int k=0;k<=2*i;k++)
         {
         System.out.print("*");
         }

         System.out.println("\n");

     }

     }

2) прямоугольный треугольник

package test1;


 class Test1 {

     public static void main(String args[])
     {
         int n=5;
     for(int i=0;i<n;i++)
     {

         for(int j=0;j<=n-i;j++)
         {

             System.out.print(" ");
         }

         for(int k=0;k<=i;k++)
         {
         System.out.print("*");
         }

         System.out.println("\n");

     }

     }


}

     }

3) левый угол треугольника

package test1;


 class Test1 {

     public static void main(String args[])
     {
         int n=5;
     for(int i=0;i<n;i++)
     {

         for(int j=0;j<=i;j++)
         {

             System.out.print("*");
         }

         System.out.println("\n");

     }

     }


}

я знаю, что это довольно поздно, но я хочу поделиться своим решением.

public static void main(String[] args) {
    String whatToPrint = "aword";
    int strLen = whatToPrint.length(); //var used for auto adjusting the padding
    int floors = 8;
    for (int f = 1, h = strLen * floors; f < floors * 2; f += 2, h -= strLen) {
        for (int k = 1; k < h; k++) {
                System.out.print(" ");//padding
            }
        for (int g = 0; g < f; g++) {
            System.out.print(whatToPrint);
        }
        System.out.println();
    }
}

пробелы слева от треугольника автоматически настраиваются в зависимости от того, какой символ или какое слово вы хотите напечатать.

если whatToPrint = "x" и floors = 3 он будет печатать

x xxx xxxxx Если нет автоматической регулировки пробелов, это будет выглядеть так (whatToPrint = "xxx" этаже граф)

xxx xxxxxxxxx xxxxxxxxxxxxxxx

поэтому я сделал добавить простой код что этого не произойдет.

для левой половины треугольника, просто изменить strLen * floors to strLen * (floors * 2) и f +=2 to f++.

для правой половины треугольника просто удалите эту петлю for (int k = 1; k < h; k++) изменить h to 0, если вы решите удалить его, не удалить System.out.print(" ");.


ну для треугольника, вам нужно иметь три петли вместо двух , один внешний цикл для итерации no линии две параллельные петли внутри основной петли первый цикл печатает уменьшение no петель второй цикл печатает увеличение no '' ну я мог бы дать точную логику , но лучше, если вы сначала попробуйте просто сконцентрируйся на том, сколько мест и сколько "' U нужно в каждой строчке связать no символов с циклом, повторяющим no линий и ты молодец ..... если это беспокоит больше, дайте мне знать, я объясню с логикой и кодом, а также


это будет печатать звезды в треугольнике:

`   
public class printstar{
public static void main (String args[]){
int m = 0;
for(int i=1;i<=4;i++){
for(int j=1;j<=4-i;j++){
System.out.print("");}

for (int n=0;n<=i+m;n++){
if (n%2==0){
System.out.print("*");}
else {System.out.print(" ");}
}
m = m+1;
System.out.println("");
}
}
}'

чтение и понимание этого должно помочь вам в разработке логики в следующий раз..


import java.util.Scanner;

public class A {

    public void triagle_center(int max){//max means maximum star having
        int n=max/2;
        for(int m=0;m<((2*n)-1);m++){//for upper star
            System.out.print(" ");
        }
        System.out.println("*");

        for(int j=1;j<=n;j++){
            for(int i=1;i<=n-j; i++){
                System.out.print("  ");
            }
            for(int k=1;k<=2*j;k++){
            System.out.print("* ");
            }

            System.out.println();
        }


    }

    public void triagle_right(int max){
        for(int j=1;j<=max;j++){
            for(int i=1;i<=j; i++){
                System.out.print("* ");
            }

            System.out.println();
        }
    }

    public void triagle_left(int max){
        for(int j=1;j<=max;j++){
            for(int i=1;i<=max-j; i++){
                System.out.print("  ");
            }
            for(int k=1;k<=j; k++){
                System.out.print("* ");
            }

            System.out.println();
        }
    }

    public static void main(String args[]){
        A a=new A();
        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();
        Scanner input1 = new Scanner (System.in);
        System.out.print("maximum Stars in last row: ");
        int row = input1.nextInt();
        if (menu == 1)
            a.triagle_left(row);
        if (menu == 2)
            a.triagle_right(row);
        if (menu == 3)
            a.triagle_center(row);
    }
}

public static void main(String[] args) {

    System.out.print("Enter the number: ");
    Scanner userInput = new Scanner(System.in);
    int myNum = userInput.nextInt();
    userInput.close();

    System.out.println("Centered Triange");
    for (int i = 1; i <= myNum; i+=1) {//This tells how many lines to print (height)

        for (int k = 0; k < (myNum-i); k+=1) {//Prints spaces before the '*'
            System.out.print(" ");
        }

        for (int j = 0; j < i; j++) { //Prints a " " followed by '*'.   
            System.out.print(" *");
        }

        System.out.println(""); //Next Line     
    }

    System.out.println("Left Triange");
    for (int i = 1; i <= myNum; i+=1) {//This tells how many lines to print (height)

        for (int j = 0; j < i; j++) { //Prints the '*' first in each line then spaces.  
            System.out.print("* ");
        }

        System.out.println(""); //Next Line         
    }

    System.out.println("Right Triange");
    for (int i = 1; i <= myNum; i+=1) {//This tells how many lines to print (height)

        for (int k = 0; k < (myNum-i); k+=1) {//Prints spaces before the '*'
            System.out.print("  ");
        }

        for (int j = 0; j < i; j+=1) { //Prints the " " first in each line then a "*".  
            System.out.print(" *");
        }

        System.out.println(""); //Next Line         
    }

}

Это наименее сложная программа, которая принимает только 1 цикл for для печати треугольник. Это работает только для центрального треугольника, но небольшая настройка заставит его работать и для других -

import java.io.DataInputStream;

public class Triangle {
    public static void main(String a[]) throws Exception{
        DataInputStream in = new DataInputStream(System.in);

        int n = Integer.parseInt(in.readLine());
        String b = new String(new char[n]).replaceAll("", " ");
        String s = "*";
        for(int i=1; i<=n; i++){
            System.out.print(b);
            System.out.println(s);
            s += "**";
            b = b.substring(0, n-i);
            System.out.println();
        }
    }
}

вопрос:

      *
     ***
    *****

ответ:

    int i,a,j;
    i=5;
    while (i>=3)
    {
        a=1;
        while (a<=i)
        {

            System.out.print(" ");
            a++;
        }
        j=10;
        while (j/2>=i)
        {
            System.out.print("*");
            --j;
        }
        System.out.println("");
        i--;
    }   

наслаждайтесь!!


для левого выровненного прямоугольного треугольника вы можете попробовать этот простой код на java:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
      Scanner sc=new Scanner(System.in);
      int size=sc.nextInt();
       for(int i=0;i<size;i++){
           for(int k=1;k<size-i;k++){
                   System.out.print(" ");
               }
           for(int j=size;j>=size-i;j--){

               System.out.print("#");
           }
           System.out.println();
       }
    }
}

найти следующий , это поможет вам распечатать полный треугольник.

package com.raju.arrays;

public class CompleteTriange {

public static void main(String[] args) {
    int nuberOfRows = 10;
      for(int row = 0; row<nuberOfRows;row++){

          for(int leftspace =0;leftspace<(nuberOfRows-row);leftspace++){
              System.out.print(" ");
          }
          for(int star = 0;star<2*row+1;star++){
              System.out.print("*");
          }
          for(int rightSpace =0;rightSpace<(nuberOfRows-row);rightSpace++){
              System.out.print(" ");
          }
          System.out.println("");
      }

}

}

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




public class triangle {
    public static void main ( String arg[] ){

        System.out.print("Enter Triangle Size : ");
        int num=0;
        try{
            num=Integer.parseInt( read.readLine() );
        } catch(Exception Number){
            System.out.println("Invalid Number!");
        }
            for(int i=1;i<=num;i++){
                for(int j=1;j<num-(i-1);j++){
                    System.out.print(" ");
                }
                for(int k=1;k<=i;k++){
                    System.out.print("*");
                    for(int k1=1;k1<k;k1+=k){

                        System.out.print("*");
                    }
                }
                System.out.println();
            }
    }
}

Вы можете быть заинтересованы в этом тоже

      Scanner sc = new Scanner(System.in);
      int n=sc.nextInt();
      int b=0;
      for(int i=n;i>=1;i--){
      if(i!=n){
      for(int k=1;k<=b;k++){
      System.out.print(" ");
        }
            }
       for(int j=i;j>=1;j--){
       System.out.print("*");
       if(i!=1){
       System.out.print(" ");
        }
            }
       System.out.println();
       b=b+2;
        }

выход:: 5

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

для треугольника центр

      Scanner sc = new Scanner(System.in);
      int n=sc.nextInt();
      int b=(n-1)*2;  
      for(int i=1;i<=n;i++){
      int t= i;
      for(int k=1;k<=b;k++){
      System.out.print(" ");
       }
       if(i!=1){
        t=i*2-1;
       }
       for(int j=1;j<=t;j++){
       System.out.print("*");
       if(j!=t){
       System.out.print(" ");
       }
        }
        System.out.println();
            b=b-2;  
        }

выход:

            *
          * * *

(a)   (b)        (c)   (d)
* ********** ********** *
** ********* ********* **
*** ******** ******** ***
**** ******* ******* ****
***** ****** ****** *****
****** ***** ***** ******
******* **** **** *******
******** *** *** ********
********* ** ** *********
********** * * **********

int line;
int star;
System.out.println("Triangle a");
        for( line = 1; line <= 10; line++ )
        {
            for( star = 1; star <= line; star++ )
            {

                System.out.print( "*" );
            }
            System.out.println();
        }

 System.out.println("Triangle b");

          for( line = 1; line <= 10; line++ )
        {
            for( star = 1; star <= 10; star++ )
            {

        if(line<star)
                System.out.print( "*" );
                else
                  System.out.print(" ");
            }
            System.out.println();
        }

 System.out.println("Triangle c");

          for( line = 1; line <= 10; line++ )
        {
            for( star = 1; star <= 10; star++ )
            {

        if(line<=star)
                System.out.print( "*" );
                //else
                 // System.out.print(" ");
            }
            System.out.println();
        }

 System.out.println("Triangle d");

          for( line = 1; line <= 10; line++ )
        {
            for( star = 1; star <= 10; star++ )
            {

        if(line>10-star)
                System.out.print( "*" );
                else
                  System.out.print(" ");
            }
            System.out.println();
        }