2012-10-09 45 views
12

tengo que escribir el código para:modo de orientar la cadena de salida de la consola

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

que había escrito el código:

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

Pero el problema es con el formato de salida. Necesito la salida en forma de matriz, cada número formateado con un ancho de 4 (los números están alineados a la derecha y eliminan los espacios iniciales/finales en cada línea). Intenté google pero no encontré ninguna solución a mi problema. ¿Alguien puede ayudarme?

+4

'String.Format ("% 4s", ...) ' – khachik

+2

@khachik: ¿puedes describir cómo funciona' String.format (% 4s ", ...)' y cuál es el segundo argumento en 'format()'? –

Respuesta

33

Puede utilizar format() dar formato a su salida de acuerdo a sus necesidades ..

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

O, también se puede utilizar: -

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

en lugar de System.out.format ..

Aquí está la explicación de cómo funciona %5d: -

  • En primer lugar, ya que estamos imprimiendo número entero, debemos utilizar %d que es especificador de formato para los números enteros ..
  • 5 en %5d significa que el ancho total de su producción se llevará a .. Por lo tanto, si su valor es 5, se se imprimirá para cubrir 5 plazas de como esta: - ****5
  • %5d se utiliza para alinear a la derecha .. para alineando a la izquierda, puede utilizar %-5d. Para un valor 5, esto va a imprimir su salida como: - 5****
+0

Thanx. Funciona. ¿Puedes describirlo? en su respuesta, ¿cómo funciona '% 5s' en' format() '? –

+0

@MohammadFaisal .. Puede usar'% 5d' ya que está imprimiendo un entero ... Explicaré en la publicación .. –

+0

@MohammadFaisal: check [javadoc] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format (java.lang.String, java.lang.Object ...)) que da enlace a [detalles] (http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#detail) –

1

En mi ejemplo, la matriz contiene de cadena de caracteres con diferente longitud y debido a que no era capaz de organizar la cadena y otras cadenas de diferentes matrices eran mis- partido en la consola. con un concepto diferente podría organizar esos arreglos en la consola mis códigos son los siguientes.

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 

Desde que estoy en condiciones de responder a mi pregunta donde tengo mi pregunta debido bloque de preguntar preguntas y respuestas cito mi respuesta y esto era un tipo diferente de formato de matriz que siento.

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – AlBlue

+0

Dado que no puedo responder a mi pregunta donde hice mi pregunta debido al bloqueo para hacer preguntas y respuestas, cito mi respuesta y este es un tipo diferente de formato de matriz que siento. –

0

El formateo de la salida se puede hacer utilizando el método System.out.format ("", "") este método contiene dos parámetros de entrada primero define el estilo de formateo y el segundo define valor para imprimir. Supongamos que quiere alinear el valor de n dígito a la derecha. pasará el primer parámetro "% 4d".

Para el uso alinear a la izquierda -ve% -nd

Para uso Alinear a la derecha + 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. 
} 
Cuestiones relacionadas