Java Denkfehler in Javacode

Black_Panter

Ensign
Registriert
Mai 2006
Beiträge
197
Hi,

folgender Code, soll mir mit '+' ein Stundenglass Ausgeben

Code:
[FONT="Courier New"]
+++++
 +++
  +
  +
 +++
+++++[/FONT]
Code:
public class Auf5a {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n = 8;
		for(int i = 0; i <= Math.round(n / 2); i++){
			for (int j = 0; j < i; j++){System.out.print(" ");}
			for (int j = 0; j < (n - 2 * i); j++){
				System.out.print("+");
				if(j == (n - 2 * i - 1)){System.out.print("\r\n");}
				}
			
		}
		for(int i = Math.round(n / 2); i >= 0; i--){
			if(n == 2 * i){continue;}
			for (int j = 0; j < i; j++){System.out.print(" ");}
			for (int j = 0; j < (n - 2 * i); j++){
				System.out.print("+");
				if(j == (n - 2 * i - 1)){System.out.print("\r\n");}
				}
			
		}
	}

}

Für ungerade Zahlen funktioniert das auch. Nur wenn ich eine Gerade Anzahl eingebe macht er mir einen Durchlauf bei der 2. for-Schleife nur mit " ". Mit der Zeile "if(n == 2 * i){continue;}" versuch ich leider erfolglos dies abzufangen.

Wo liegt mein Denkfehler?

Grüße
Sören
 
Also ich würds ja so machen:
Code:
int width = 10;		// gibt die Breite der ersten Zeile an		
int limit = (width-1)/2;
int i, status = 0, current = 0;
StringBuilder sb = new StringBuilder();
while(status < 2){
	for(i = 0; i < width; ++i){
		if(i >= current && i < (width - current)) sb.append('x');
		else sb.append(' ');
	}
	if(status == 0){
		if(current < limit) ++current;
		else {
			--current;
			status = 1;
		}
	} else {
		if(current > 0) --current;
		else status = 2;
	}
	sb.append("\r\n");
}
System.out.println(sb.toString());
 
Zuletzt bearbeitet:
Zurück
Oben