¿Cómo se escribe un programa que calcule la tabla de multiplicar para todos los números menores o iguales N. Nótese que N es un número entero lee del usuario.
El programa va a hacer en varias ocasiones que hasta que el usuario introduce -1
en JAVA .
No sé si debo utilizar bucles anidados o un método para esto, pero escribí el siguiente código incompleto, que me está dando un bucle infinito
public static void main(String[] args) {
int N ;
System.out.println("Enter N: " );
N = in.nextInt();
while ( N != -1) {
for(int i = 1; i <= N; ++i)
{
for (int c = 1; c <= 10; ++c)
System.out.println(N + "*" + c + " = " + (N*c));
}
}
}
Quiero una salida como esta:
Enter an integer to print it's multiplication table, -1 to
exit
2
Multiplication table of 1
1*1 = 1, 1*2 = 2, 1*3 = 3, 1*4 = 4, 1*5 = 5, 1*6 = 6, 1*7 =
7, 1*8 = 8, 1*9 = 9, 1*10 = 10,
Multiplication table of 2
2*1 = 2, 2*2 = 4, 2*3 = 6, 2*4 = 8, 2*5 = 10, 2*6 = 12, 2*7
= 14, 2*8 = 16, 2*9 = 18, 2*10 = 20,
Enter an integer to print it's multiplication table, -1 to
exit
-1
Su código se ejecuta en un bucle infinito, porque N
no cambia en el exterior for
-loop.
Se puede colocar en el interior del símbolo del bucle, y el cambio a un do-while
bucle para garantizar la ejecución de al menos 1; o ninguno si el usuario introduce un número menor que 1 (debido a la exterior for
-loop).
También faltaban referencia al escáner para capturar la entrada.
Por último, se olvidó de usar i
en lugar de N
en la salida, de lo contrario la salida interior se repetirá los mismos valores cada vez.
import java.util.Scanner; // Import Scanner
public static void main(String[] args) {
int N;
Scanner in = new Scanner(System.in); // Missing Scanner
do { // Changed to do-while loop
System.out.println("Enter N: " );
N = in.nextInt(); // Prompt user for N.
for(int i = 1; i <= N; ++i)
{
for (int c = 1; c <= 10; ++c)
System.out.println(i + "*" + c + " = " + (i*c)); // Use i instead of N
}
} while ( N != -1);
}