Ejercicio sencillo en Java

PeandPe

Buenas

Tengo que hacer el siguiente Ejercicio:

Diseñar un programa al que se le pase un número entero N y muestre en pantalla lo siguiente:

1
1 2
1 2 3
1 2 3 4
. . . . . . .
1 2 3 4 5…N

En pseudocódigo lo hice así (y me lo dieron por válido):

Pseudocódigo

Ahora, al hacerlo en Java y adaptando el código:

Java

No me imprime nada por pantalla. El problema creo que está en el 2º bucle for, en el de j, pero no consigo arreglarlo.

¿Alguna ayudita?

Gracias!

Thanat0s

Sip, el problema está en el segundo bucle, que la condición de parada dices que sea j>i y en vez de decrementar aumentas j.

public class Ejercicio
{
public static void main (String args[])
{
int num=7;

for (int i=0;i<num;i++)
{
for (int j=0;j<i+1;j++)
{
System.out.println(j+1);
}
}
}
}

El pseudocódigo que te dieron por bueno, no tiene pinta de estar bien tampoco o lo has copiado mal.

Prueba lo que te he puesto, te he quitado contador porque no es necesario, j hace la función de contador en cada vuelta del bucle for que está por encima.

Saludos.

pd: no lo he probado, simplemente he hecho una traza mental, creo que funcionará, sino postea lo que falle :P

PeandPe
Resultado

Eso imprime.

Necesito:

1
1 2
1 2 3
1 2 3 4
. . . . . . .
1 2 3 4 5…N

Sería meterle el salto de línea, pero no me funciona ni con Systemout.println() ni con /n

PD: Gracias por tu ayuda!

Thanat0s

Cierto, arreglado creo que sería así:

public class Ejercicio
{
public static void main (String args[])
{
int num=7;

for (int i=0;i<num;i++)
{
for (int j=0;j<i+1;j++)
{
System.out.print(j+1);
System.out.print(" ");
}
System.out.println("");
}
}
}
PeandPe

Perfecto!

Muchisimas gracias máquina!

dagavi

El poder del pseudocódigo formal: piensas que algo está bien, pero ni siquiera se puede ejecutar para probarlo, lo único que tienes es el mismo código en Java y en castellano, ambos con el mismo error.
Aunque esto ocurre por programar 2 veces, posiblemente el error no lo cometerías si en vez de usar pseudocódigo lo escribieras en lenguaje natural y después hicieras el java, ej:
// NUM veces -> for (int i = 1; i <= num; ++i)
// Escribo desde 1 hasta i -> for (int j = 1; j <= i; ++j) write(j + " " );

(esto va por el post del pseudocódigo, no por este).

Aun así como ya te han dicho solo tenías que ver que I empieza en 1, J empieza en 0 y dices que se haca mientras J > I, es decir, nunca. Eso sin contar que si entrara una vez nunca acabaría porque haces "j++" por lo que si J > I, y encima incrementas J mal va la cosa xD

eXtreM3

Ahora solo te falta pedir la variable al usuario y que pinte la pirámide que él quiera ;)

Usuarios habituales

  • eXtreM3
  • dagavi
  • PeandPe
  • Thanat0s