web-dev-qa-db-fra.com

Comment aligner la chaîne sur la sortie de la console

Je dois écrire du code pour:

Multiplication Tables Description: Print out the grade school multiplication table upto 12*12

J'avais écrit le code:

public class tables {
    public static void main(String[] args) {
        //int[][] table = new int[12][12];
        String table="";
        for(int i=1; i<13; i++){
            for(int j=1; j<13; j++){
                //table[i-1][j-1] = i*j;
                table+=(i*j)+" ";
            }
            System.out.println(table.trim());
            table="";
        }
    }
}

Mais le problème vient du format de sortie. J'ai besoin de la sortie dans une matrice comme la mode, chaque nombre formaté à une largeur de 4 (les nombres sont alignés à droite et rayent les espaces de début/fin sur chaque ligne). J'avais essayé google mais je n'ai trouvé aucune bonne solution à mon problème. Quelqu'un peut-il m'aider?

14
Mohammad Faisal

Vous pouvez utiliser format() pour formater votre sortie en fonction de vos besoins.

    for(int i=1; i<13; i++){
        for(int j=1; j<13; j++){

           System.out.format("%5d", i * j);
        }
        System.out.println();  // To move to the next line.
    }

Ou, vous pouvez également utiliser: -

System.out.print(String.format("%5d", i * j));

au lieu de System.out.format ..

Voici l'explication de comment %5d fonctionne: -

  • Tout d'abord, puisque nous imprimons un entier, nous devons utiliser %d qui est un spécificateur de format pour les entiers ..
  • 5 dans %5d signifie la largeur totale que prendra votre sortie. Donc, si votre valeur est 5, elle sera imprimée pour couvrir 5 espaces comme ceci: - ****5
  • %5d est utilisé pour aligner à droite .. Pour aligner à gauche, vous pouvez utiliser %-5d. Pour une valeur 5, cela imprimera votre sortie sous la forme: - 5****
36
Rohit Jain

Dans mon exemple, le tableau contient des chaînes de caractères de longueur différente et, à cause de cela, je n'ai pas pu arranger la chaîne et d'autres chaînes de tableaux différents ne correspondent pas sur la console. avec un concept différent, je pourrais organiser ces tableaux sur la console mes codes sont comme ci-dessous.

package arrayformat;

 /**
 *
 * @author Sunil
 */
 public class ArrayFormat {



  /**
  * @param args the command line arguments
  */

  public static void main(String[] args) {

  int[] productId = new int[]  
 {1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,};
   String[] productName= new String[]{"Pepsi","kissan jam","Herbal 
 oil","Garnier man's","Lays chips","biscuits","Bournvita","Cadbury","Parker 
 Vector","Nescafe",};
   String[] productType = new String[]{"Cold Drink","Jam","Oil","Face 
 wash","chips","Biscuits","Health 
 Supplement","Chocolate","Stationary","Coffee",};
    float[] productPrice = new float[]{24,65,30,79,10,20,140,20,150,80,}; 


       int productNameMaxlength=0;
   int productTypeMaxlength=0;



    for (String productName1 : productName) {
        if (productNameMaxlength < productName1.length()) {
            productNameMaxlength = productName1.length();
        }
    }


    for (String productType1 : productType) {
        if (productTypeMaxlength < productType1.length()) {
            productTypeMaxlength = productType1.length();
        }
    }



   for(int i=0;i<productType.length;i++)

   { 
              System.out.print(i);

      System.out.print("\t");

              System.out.print(productId[i]);

              System.out.print("\t");

              System.out.print(productName[i]);

       for(int j=0;j<=productNameMaxlength-productName[i].length
     ();j++)

       {

        System.out.print(" ");

       }

       System.out.print("\t");

       System.out.print(productType[i]);

       for(int j=0;j<=productTypeMaxlength-productType[i].length
    ();j++)

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

               System.out.print("\t");

       System.out.println(productPrice[i]);
          }           
      }

    }
   and output is--
  Sr.No  ID     NAME            TYPE               PRICE
   0    1001    Cadbury         Chocolate           20.0
   1    1002    Parker Vector   Stationary          150.0
   2    1003    Nescafe         Coffee              80.0
   3    1004    kissan jam      Jam                 65.0
   4    1005    Herbal oil      Oil                 30.0
   5    1006    Garnier man's   Face wash           79.0
   6    1007    Lays chips      chips               10.0
   7    1008    biscuits        Biscuits            20.0
   8    1009    Bournvita       Health Supplement   140.0
   9    1010    Pepsi           Cold Drink          24.0

Étant donné que je ne suis pas en mesure de répondre à ma question où j'ai posé ma question en raison du blocage pour poser la question et la réponse, je cite ma réponse et c'était un autre type de format de tableau que je ressens.

2
Sunil Bhagwat

Le formatage de la sortie peut être effectué à l'aide de la méthode System.out.format ("", ""). Cette méthode contient deux paramètres d'entrée définissant d'abord le style de formatage et ensuite définissant la valeur à imprimer. Supposons que vous vouliez aligner à droite la valeur à n chiffres. vous passerez le premier paramètre "% 4d".

Pour l'alignement à gauche, utilisez -ve% -nd

Pour l'alignement à droite, utilisez + ve% nd

 for(int i=1; i<13; i++){
       for(int j=1; j<13; j++){
            System.out.format("%4d", i * j);  //each number formatted to a width of 4 so use %4d in the format method.
    }
    System.out.println();  // To move to the next line.
}
0
Prabhat Yadav