El ejercicio que vamos a resolver sera el que encontramos en el capitulo de sentencias de control el cual es:
Realizar un programa que genere la siguiente sentencia de digitos:
el numero de filas estara comprendido entre 11 y 20 y el resultado aparecera centrado e la pantalla.
empecemos:
primero declaramos la clase:
public class PiramideNum
{
declaramos el metodo main
public static void main(String[] args){
declaramos la siguientes variables dentro de main:
int nfilas = 0; // guarda el numero de filas que se desea imprimir
int ncol =0; //guarda el numero de columnnas que se va a imprimir
int antes=0; // indica la posicion hasta donde se desea imprimir espacios antes de
//empezar
//imprimir los numeros.
int despues = 0; //indica la posicion hasta donde se desea imprimir espacios despues
//de imprimir los numeros
int num=0; //indica el numero que se va a imprimir
int primernum = 0; // indica el primer numero imprimido en la fila este valor cambia
//por fila
pedir la cantidad de filas que se va a imprimir.
System.out.println("digite la cantidad de filas");
nfilas = Integer.parseInt(en.readLine()); // guarda el numero digitado en pantalla
ncol = nfilas * 2 - 1; //la cantidad de columnas a digitar sera la cantidad de filas
//multiplicado por 2 y restado 1
antes = nfilas; //al iniciar el programa la posicion a digitar el primer numero sera el
//centro
despues = nfilas;// la posicion despues tambien coincidira con antes que es el centro
//de la piramide
empieza un ciclo repetitivo desde la posicion uno (primera fila de la piramide) hasta la cantidad de filas.
for(int fila = 1; fila<= nfilas ; fila++){
num = primernum + 1; // el numero a imprimir sera igual primernum+1' que al inicio es
// 0+1 =1'
empieza un for anidado desde la primera columna a imprimir col =1 hasta la cantidad de columnas
for(int col=1; col<= ncol ; col++){
si el numero de columna es menor que la posicion donde empieza a poner los numeros imprimira un espacio
if(col < antes ){
System.out.print( " "); //imprime espacio
continue; //se salta el resto del bucle y pasa a la siguiente repeticion
}
si el numero de columna es mayor que la posicion donde termina de poner numeros imprimira un espacio
else if(col > despues){
System.out.print( " ");// imprimi espacio
continue;//se salta el resto del bucle y pasa a la siguiente repeticion
}
de lo contrario. si col esta entre el rango de antes y despues, es decir entre la posicion donde empieza a escribir los numeros y la posicion donde termina de escribir numero que imprimia el numero variable 'num'
else {
if(num <0) //si el numero a imprimir es menor que o
num =9; // que convierta en 9
if(num >9) // si el numero es mayor que 9
num =0; // que lo convierta en 0
if(col== antes) // si es el primer numero a imprimir
primernum = num; // lo guarda en primernum
System.out.print(num); //imprimir la variable num
}
//si el numero de columna es menor que la posicion media de la piramide
if(col<nfilas)
num ++; // que la variable num 'valor a imprimir aumente'
si el numero de columnas es mayor que la posicion media de la piramide
else
num--; //disminuya la variable num
nota: este aumento o el decremento cambiara el valor de num pero para la siguiente vuelta del ciclo for
} //cierre del primer ciclo for
System.out.println(""); // quiebra la siguiente linea
antes--; // empezar a imprimir los numeros una columna antes
despues ++; //terminar de imprimir los numeros una columna despues
} //cierra el segundo ciclo for
} // cierra el metodo main
} //fin de clase