Java [Java Programmieren] Hamster Simulator

tryitz

Lt. Junior Grade
Registriert
Nov. 2013
Beiträge
337
Guten Morgen,

für die Schule lernen wir momentan mithilfe des Hamster Simulator das Programmieren von Java. Dazu haben wir diese Aufgabe 6 gestellt bekommt.

https://de.wikibooks.org/wiki/Progr..._den_Einsatz_im_Unterricht/_Komplexe_Aufgaben

Nach meiner Logik, soll der Hamster zunächst alle Gänge durchgehen und die Schritte Zählen lernen. Dies funktioniert auch bisher soweit. Nun habe ich das Problem, dass der ermittelte Wert als Beispiel "4" Schritte irgendwo abgelegt werden muss, um am Ende die Werte zu Vergleichen und den längsten Gang zu ermitteln. Leider bekomme ich dies nicht hin, bzw. habe keinen richtigen Ansatz für dieses Problem.

Mein bisheriger Code:
Code:
void kehrt() {
	linksUm();
	linksUm();
}

void rechtsUm() {
	linksUm();
	linksUm();
	linksUm();
}

public int laengsterGang() {

	//Deklaration Schritte betragen noch 0
	int steps = 0;					

	while(vornFrei()) {
		
		vor();
		
		//steps+1
		steps++;					
	}
	
	String s = String.valueOf(steps);
	schreib (s +" " + "Schritte");

	kehrt();
	
	//wenn steps schließlich mehr wie 0 beträgt
	while(steps>0) {				
		
		vor();
		
		//steps-1
		steps--;					
	}
	return steps;
}



void main() {
    
	laengsterGang();
	laengsterGang();
	rechtsUm();
	laengsterGang();
	laengsterGang();
	
}

Wäre für einen kleinen Denkanstoß sehr danbar:)
 
du kannst ganz oben in der klasse eine int Schritte erstellen und dann sagen, Schritte = 4, dann hast du es in dieser klasse abgespeichert.
du kannst diese int schritte auch static machen, dann kann normalerweise jede klasse auf die int Schritte zugreifen.
 
laengsterGang() liefert einen int zurück, also hast du den Wert in main().
 
Ich hoffe mal ich habe das richtig verstanden, was du machen willst, da das etwas von deiner Angabe abweicht. Am einfachsten wäre es die Main bei dir nun so zu gestalten :
Code:
int MaxLength = 0;
int MaxDir;
for(int i=0; i < 4; i++)
{
int CurrentLength = laengsterGang();
if ( CurrentLength   < MaxLength )
   {
    MaxLength = CurrentLength;
     MaxDir = i;
   }
linksUm(); // hier eventuell noch anpassen, weil er bei dir am schluss von laengsterGang nicht mehr wieder richtig ausrichtet
}
Ist denke ich selbsterklärend.
 
Zuletzt bearbeitet:
Vielen Dank für die Lösungsansätze. Ich werde schauen, was ich damit anfangen kann und gebe euch später eine Rückmeldung.
 
Zurück
Oben