Sumar cero a un número de un solo dígito, ¿es posible?

public class MultiplicationTable {
public static void main (String[]a){

    int[] x;
    x = new int[10];
    int i;
    int n=0;

    for (i=0;i<x.length;i++){
        n++;
        x[i]=n;
        System.out.print(x[i] + " ");
    }

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[0] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[1] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[2] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[3] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[4] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[5] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[6] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[7] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[8] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[9] * x[i] + " ");


}
}

Este es un programa que mostrará una tabla de multiplicar como esta:

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

3 6 9 12 15 18 21 24 27 30

4 8 12 16 20 24 28 32 36 40

5 10 15 20 25 30 35 40 45 50

6 12 18 24 30 36 42 48 54 60

7 14 21 28 35 42 49 56 63 70

8 16 24 32 40 48 56 64 72 80

9 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100

=============================================== =============

Está funcionando y es correcto, pero quiero que se vea así:

01 02 03 04 05 06 07 08 09 10

01 02 03 04 05 06 07 08 09 10

02 04 06 08 10 12 14 16 18 20

03 06 09 12 15 18 21 24 27 30

04 08 12 16 20 24 28 32 36 40

05 10 15 20 25 30 35 40 45 50

06 12 18 24 30 36 42 48 54 60

07 14 21 28 35 42 49 56 63 70

08 16 24 32 40 48 56 64 72 80

09 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100

===============================================

¿Hay alguna manera?

preguntado el 01 de julio de 12 a las 05:07

Si alguna vez encuentra código duplicado más de, bueno, digamos una vez, detener y pregúntate a ti mismo; cual es la manera mas facil? Ahora, considere reescribir lo anterior con una construcción de bucle [otro]. "copiar y pegar" no es una construcción/herramienta de lenguaje. -

2 Respuestas

¡Sí tu puedes! Puedes usar String.format para agregar cero relleno a su salida.

Ejemplo:

String.format("%05d", 2) produciría 00002.

Algunas mejoras en el código actual:

No estoy seguro de por qué tiene la intención de almacenar los números dentro de una matriz (tal vez con fines de práctica), pero eso no es necesario, ya que de todos modos va del 1 al 10. Aunque si quieres hacer eso, no necesitas ambos i y n.

for (i=0; i<x.length; i++){
    x[i] = i+1;
    System.out.print(x[i] + " ");
}

En segundo lugar, estoy seguro de que se da cuenta de que tiene mucho código duplicado y es bastante secuencial. Puede hacerlo usando 2 bucles for anidados, en lugar de tener 10 bucles individuales:

for (int row = 1; row <= 10; row++) {
    for (int col = 1; col <= 10; col++)
        System.out.print(String.format("%03d", row * col));
    System.out.println();
}

Respondido 01 Jul 12, 06:07

Gracias Steven Luu. Eso ayudo. :) - cuidado de steve

Como dijeron los otros chicos, su código también puede usar algunas mejoras. - steven luu

¿Puedes darme alguna idea de cómo? Todavía soy novato en la programación. - cuidado de steve

Si eres nuevo, es mejor que no lo hagamos por ti. Aquí está la idea: mire su código y mire lo único que cambia de línea a línea entre sus 10 declaraciones System.out.println. Ahora, cámbielo a una variable e itérelo con un bucle tal como lo ha hecho con i para imprimir cada columna. - dcow

¡Guau! Qué código tan corto. Gracias chicos, todas sus respuestas ayudaron mucho. :) - cuidado de steve

Sí:

String.format("%01d", x[i]*x[j]); is what you want.

Si estás familiarizado con printf en C entonces esto será familiar. Si no, lea la referencia de Java en Cadenas de formato String.format.

Además, en lugar de 10 System.out.println declaraciones, puede utilizar un bucle doblemente anidado con dos contadores. Uno para contar en qué fila estás j y uno para cada columna i.

Respondido 01 Jul 12, 05:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.