Methoden Methode wird nicht auf Konsole ausgeführt

Hallo zusammen,

ich habe mich mit der Aufgabe 3.1 Terminalhäuschen II der Datei im Anhang beschäftigt. Dabei habe ich folgenden Code erstellt:

package terminalhäuschen2;

import java.util.Scanner;

public class Terminalhäuschen2_3_1 {

//hausbreite=h; breite innenraum=i
static int h, i;
static int dachhöhe=h/2;
static int mauerhöhe=6;

public static void dach () {
for(int zeile=0; zeile<h; zeile++){
for(int spalte=0; spalte<dachhöhe; spalte++){

if(spalte<h/2-zeile-1 ||spalte>h-(h/2-zeile))
//Ausgabe Leerzeichen
System.out.print(' ');
else
//Ausgabe *
System.out.print('*');
}
System.out.println();
}
}

public static void mauer () {
for(int zeile=0; zeile<dachhöhe; zeile++){
for(int spalte=0; spalte<h; spalte++){
//To Do
if(zeile==0 || zeile==5)
System.out.print("+");
else{
if(spalte<(h-i)/2 || spalte>h-(h-i)/2)
System.out.print("+");
else
System.out.print(" ");
}

}
}
}

public static void main(String[] args) {
Scanner in = new Scanner(System.in);

boolean hpasst = false;
while (!hpasst){
System.out.println("Gebe die Breite des Hauses ein. Die Zahl muss gerade und größer drei sein.");
h=in.nextInt();
hpasst=(h%2==0)&&(h>=4);
}
boolean ipasst = false;
while (!ipasst){
System.out.println("Gebe die Breite des Innenraums ein. Die Zahl muss gerade und größer eins sein.");
i=in.nextInt();
ipasst=(i%2==0)&&(i>=2);
}
dach();
mauer();
}
}
Diesen habe ich mit der Lösung verglichen (siehe Anhang) und von der Logik keinen Unterschied gefunden. Bei meinem Code terminiert das Programm jedoch nach Eingabe der Breite des Innenraums und damit wird das Haus nicht ausgegeben.

Ich würde mich sehr freuen, wenn ihr mir helfen könnt, meinen Fehler zu finden, sodass das Haus ausgegeben wird. Danke!
 

Anhänge

Vermutlich gibt dein Programm nur Leerzeichen und neue Zeile aus aber kein + bzw. * ... Überprüfe mal deine Abfragen

Edit: beachte dass deine Divisionen immer Integer-Divisionen sind.
 
Dein Fehler liegt wohl in dieser Zeile:
Java:
static int dachhöhe=h/2;

Wenn die Variable initialisiert wird hat h den Defaultwert 0 und dachhöhe ist damit 0/2 = 0.
Nur weil du im Laufe des Codes h anpasst, bedeutet das nicht, dass sich die Variable dachhöhe auch variabel anpasst. Diese bleibt 0. Entsprechend werden nur Leerzeilen in deinen for-Schleifen ausgegeben wie JStein schon gesagt hat.
 

Zurück
Oben