Apprezzo il PO è nuovo a Java, quindi i metodi potrebbero essere considerati "avanzato", ma penso che valga la pena di utilizzare questo problema per mostrare come si può attaccare un problema rompendolo in pezzi.
Pensiamo di scrivere un metodo per stampare una singola linea, raccontando il metodo che la linea numero è:
public void printTriangleLine(int rowNumber) {
// we have to work out what to put here
}
dobbiamo stampare un numero di spazi, allora qualche numero di stelle.
Guardando all'esempio, posso vedere che (se la prima riga è 0) è (5-rowNumber) spazi e (2 * rowNumber + 1) stelle.
Inventiamo un metodo che consente di stampare le righe di caratteri per noi, e lo usano:
public void printTriangleLine(int rowNumber) {
printSequence(" ", 5 - rowNumber);
printSequence("*", 2 * rowNumber + 1);
System.out.println();
}
Che non compilare fino a quando abbiamo effettivamente scrivere printSequence(), quindi facciamolo:
public void printSequence(String s, int repeats) {
for(int i=0; i<repeats; i++) {
System.out.print(s);
}
}
Ora è possibile test printSequence per conto proprio, e è possibile test printTriangleLine a sé stante. Per ora si può solo provare chiamando quei metodi direttamente nel main()
public static void main(String [] args) {
printSequence("a",3);
System.out.println();
printTriangleLine(2);
}
... eseguirlo e verificare (con gli occhi) che emetta:
aaa
*****
quando si arriva ulteriormente in programmazione, ti consigliamo di utilizzare un framework di test unità come jUnit. Invece di stampa, faresti più probabile cose scrivere come printTriangleLine per restituire una stringa (che ci si stampa da più in alto nel programma), e si dovrebbe automatizzare il vostro test con comandi come:
assertEquals(" *****", TriangleDrawer.triangleLine(2));
assertEquals(" *", TriangleDrawer.triangleLine(0))
Ora noi avere i pezzi di cui abbiamo bisogno per disegnare un triangolo.
public void drawTriangle() {
for(int i=0; i<5; i++) {
printTriangleLine(i);
}
}
Il codice che abbiamo scritto è un po 'più lungo delle risposte che altre persone hanno dato. Ma siamo stati in grado di testare ogni passaggio e abbiamo metodi che possiamo riutilizzare in altri problemi. Nella vita reale, dobbiamo trovare il giusto equilibrio tra la rottura di un problema in troppi metodi o troppi pochi. Tendo a preferire molti metodi molto brevi.
Per il credito supplementare:
- adattare questo modo che invece di stampa a System.out, i metodi di restituire una stringa - così nel main() è possibile utilizzare
System.out.print(drawTriangle())
- adattare questo modo che puoi chiedere a drawTriangle() per diverse dimensioni - ovvero, puoi chiamare
drawTriangle(3)
o drawTriangle(5)
- farlo funzionare per triangoli più grandi. Suggerimento: sarà necessario aggiungere un nuovo parametro "width" per stampareTriangleLine().
Qui puoi trovare la tua soluzione- http://java4732.blogspot.in/2016/08/pyramid-programs-in-java.html – Umesh