web-dev-qa-db-fra.com

Imprimer des triangles en Java?

Mon travail dans mon cours Java consiste à créer 3 triangles. Un aligné à gauche, un aligné à droite et un centré. Je dois faire un menu pour quel type de triangle et ensuite entrer combien de lignes est voulu. Les triangles doivent ressembler à ceci

*
**
***
****


   *
  **
 ***
****


  *
 ***
*****

Jusqu'ici, j'ai réussi à faire le triangle aligné à gauche mais je n'arrive pas à obtenir les deux autres. J'ai essayé de googler mais rien n'a été trouvé. Quelqu'un peut-il aider? J'ai ceci jusqu'à présent.

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

Exemple de sortie:

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

     *
    ***
   *****
  *******
 *********
***********
6
Garrett Outlaw

Astuce: Pour chaque ligne, vous devez premier imprimer quelques espaces et puis imprimer quelques étoiles . Le nombre d'espaces doit diminuer d'un par ligne, tandis que le nombre d'étoiles devrait augmenter.

Pour la sortie centrée, augmentez le nombre d'étoiles de deux pour chaque ligne.

15
Ilmari Karonen

Ilmari Karonen a de bons conseils et je voudrais simplement les généraliser un peu. En général, avant de demander "comment puis-je me procurer un ordinateur pour le faire?" demander "commentIferais-je cela?"

Donc, si quelqu'un vous donnait un document Word vide et vous demandait de créer les triangles, comment feriez-vous pour le faire? Quelle que soit la solution que vous proposez, il n’est généralement pas difficile de la traduire en Java (ou tout autre langage de programmation). Ce n'est peut-être pas la meilleure solution, mais (espérons-le!), Cela fonctionnera et cela vous indiquera peut-être une meilleure solution.

Ainsi, par exemple, vous pourriez peut-être dire que vous taperiez la base, que vous remonteriez une ligne, que vous taperiez la ligne la plus haute suivante, etc. Cela suggère que vous pouvez faire la même chose en Java - créez une liste de chaînes, base-to-top, puis inversez-les. Cela pourrait suggérer que vous pouvez simplement les créer dans l'ordre inverse, sans avoir à les inverser. Et ensuite that pourrait suggérer que vous n’avez plus besoin de la liste, puisque vous ne ferez que les créer et les imprimer dans le même ordre - à ce stade, vous avez trouvé un conseil essentiel pour Ilmari Karonen.

Ou peut-être imagineriez-vous une autre façon de procéder? Imagineriez-vous l'idée d'Ilmari Karonen plus directement. Quoi qu'il en soit, cela devrait vous aider à résoudre ce problème et de nombreux autres.

6
yshavit
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();
    }
}
}
2
ritesh9984

Triangle aligné à gauche - * **



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

Triangle aligné à droite - *
**



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

Triangle central - *
* *



du modèle ci-dessus, nous en venons à savoir 1) nous devons imprimer un motif contenant n lignes (pour le motif ci-dessus, n est 4) . 2) Au début de chaque rangée, nous devons imprimer des espaces suivis d'une étoile puis de nouveau d'un espace. Le nombre d'espaces de chaque ligne au début est décrémenté de 1 . Donc pour le triangle rectangle, nous devons utiliser 3 pour la boucle . 1er "boucle" pour imprimer n ligne . 2ème "boucle pour les espaces d'impression . 3ème" pour boucle "pour les étoiles.

Code pour le centre Triangle-

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

CODE POUR IMPRIMER TOUS LES 3 MOTIFS - espace de classe publique4 { public statique vide leftTriangle () { /// ici le nombre de lignes est 4 for (int a = 1; a <= 4; a ++) // boucle de for pour la ligne {
for (int b = 1; b <= a; b ++) pour la boucle de la colonne { System.out.print ("*"); }

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

// Ceci est pour le triangle normal

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

// Ceci est pour le triangle de gauche, l'espace est juste supprimé avant l'impression *

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
Anup P

Pour le triangle rectangle, pour chaque rangée:

  • Premièrement: vous devez imprimer des espaces de 0 à rowNumber - 1 - i
  • Deuxièmement: vous devez imprimer \* de rowNumber - 1 - i à rowNumber.

Remarque: i est l'index de ligne de 0 à rowNumber et rowNumber est le nombre de lignes.

Pour le triangle central: cela ressemble à "triangle rectangle" et en ajoutant \* en fonction de l'index de la ligne (par exemple: dans la première ligne, vous n'ajouterez rien car l'index est 0, dans la deuxième ligne, vous ajoutez un '*', et bientôt).

1
Alya'a Gamal

Je sais que c'est assez tard, mais je veux partager ma solution.

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

Les espaces à gauche du triangle s'ajusteront automatiquement en fonction du caractère ou du mot que vous souhaitez imprimer.

si whatToPrint = "x" et floors = 3 il sera imprimé

x xxx xxxxx S'il n'y a pas d'ajustement automatique des espaces, cela ressemblera à ceci (whatToPrint = "xxx" même nombre d'étages)

xxx xxxxxxxxx xxxxxxxxxxxxxxx

J'ai donc fait ajouter un code simple pour que cela ne se produise pas.

Pour le demi-triangle de gauche, remplacez simplement strLen * floors par strLen * (floors * 2) et le f +=2 par f++.

Pour le demi-triangle droit, il suffit de supprimer cette boucle for (int k = 1; k < h; k++) ou de changer h en 0; si vous choisissez de la supprimer, ne supprimez pas la System.out.print(" ");.

1
conquistador

1) Triangle normal

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) triangle rectangle

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) Triangle angulaire gauche

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");

     }

     }


}
1
raman rayat

bien pour le triangle, vous devez avoir trois boucles au lieu de deux, une boucle externe pour itérer le no de ligne deux boucles parallèles à l'intérieur de la boucle principale la première boucle imprime en diminuant le nombre de boucles .__ La deuxième boucle affiche un nombre croissant de ''. Eh bien, je pourrais vous donner la logique exacte également, mais mieux vaut essayer d'abord Concentrez-vous simplement sur le nombre d'espaces et le nombre de '' dont vous avez besoin. line rapporte le no de symboles avec la boucle itérant le nombre de lignes et vous avez terminé ..... si cela vous dérange plus, faites-le-moi savoir, j'expliquerai aussi avec la logique et le code

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

Cela va imprimer des étoiles en triangle:

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

Lire et comprendre cela devrait vous aider à concevoir la logique la prochaine fois.

0
Robin

Pour le triangle central

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

sortie:

            *
          * * *
0
RKP

C'est le programme le moins complexe, qui ne prend que 1 boucle pour imprimer le triangle. Cela ne fonctionne que pour le triangle central, mais de petites modifications le feraient aussi pour d'autres 

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("\0", " ");
        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();
        }
    }
}
0
Pramod Shetty

Cela pourrait aussi vous intéresser 

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

Sortie :: 5

       * * * * * 
         * * * * 
           * * * 
             * * 
               *
0
RKP
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         
    }

}
0
Lali

Trouvez ce qui suit, cela vous aidera à imprimer le triangle complet.

package com.raju.arrays;

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

}

}

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



0
Raju

Pour un triangle rectangle aligné à gauche, vous pouvez essayer ce code simple en 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();
       }
    }
}
0
Abi

Question: 

      *
     ***
    *****

Réponse:

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

Prendre plaisir!!

0
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);
    }
}
0
Surendra chaudhary