aprecio la OP es nuevo en Java, por lo métodos podrían ser considerados "avanzada", sin embargo, creo que vale la pena utilizar este problema a mostrar cómo se puede atacar a una problema al romperlo en pedazos.
Vamos a pensar acerca de cómo escribir un método para imprimir una sola línea, diciéndole al método que recta numérica es:
public void printTriangleLine(int rowNumber) {
// we have to work out what to put here
}
Tenemos que imprimir un número de espacios, a continuación, algunos número de estrellas.
Mirando el ejemplo, puedo ver que (si la primera fila es 0) es (5-rowNumber) espacios y (2 * rowNumber + 1) estrellas.
Vamos a inventar un método que imprime las filas de caracteres para nosotros, y lo utilizan:
public void printTriangleLine(int rowNumber) {
printSequence(" ", 5 - rowNumber);
printSequence("*", 2 * rowNumber + 1);
System.out.println();
}
Eso no va a compilar hasta que realmente escribimos printSequence(), por lo que vamos a hacer eso:
public void printSequence(String s, int repeats) {
for(int i=0; i<repeats; i++) {
System.out.print(s);
}
}
Ahora puede probar printSequence en sí mismo, y usted puede probar imprimirTriangleLine en sí mismo. Por ahora sólo se puede probar que fuera llamando a los métodos directamente en main()
public static void main(String [] args) {
printSequence("a",3);
System.out.println();
printTriangleLine(2);
}
... ejecutarlo y comprobar (con los ojos) que produzca:
aaa
*****
Al llegar más lejos en programación, querrá utilizar un marco de prueba de unidad como jUnit. En lugar de imprimir, és cosas de escritura más probables como printTriangleLine para devolver una cadena (que desea imprimir desde más arriba en su programa), y que le automatizar sus pruebas con comandos como:
assertEquals(" *****", TriangleDrawer.triangleLine(2));
assertEquals(" *", TriangleDrawer.triangleLine(0))
Ahora tener las piezas que necesitamos para dibujar un triángulo.
public void drawTriangle() {
for(int i=0; i<5; i++) {
printTriangleLine(i);
}
}
El código que hemos escrito es un poco más largo que las respuestas que otras personas han dado. Pero hemos podido probar cada paso, y tenemos métodos que podemos usar nuevamente en otros problemas. En la vida real, tenemos que encontrar el equilibrio adecuado entre dividir un problema en demasiados métodos o muy pocos. Tiendo a preferir muchos métodos realmente cortos.
Para crédito adicional:
- adaptar este modo que en lugar de imprimir en System.out, los métodos devuelven una cadena - por lo que en su main() se puede utilizar
System.out.print(drawTriangle())
- adaptar esta manera que puede solicitar drawTriangle() para diferentes tamaños, es decir, puede llamar al
drawTriangle(3)
o drawTriangle(5)
- hacer que funcione para triángulos más grandes. Sugerencia: deberá agregar un nuevo parámetro de "ancho" para imprimirTriangleLine().
Aquí puede encontrar su solución- http://java4732.blogspot.in/2016/08/pyramid-programs-in-java.html – Umesh