Java [Java Programmieren] Hamster Simulator

tryitz

Lt. Junior Grade
Dabei seit
Nov. 2013
Beiträge
330
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/Programmieren_leicht_gemacht_-_adäquate_Modelle_für_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:)
 

Belvor

Banned
Dabei seit
Okt. 2015
Beiträge
33
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.
 

wahli

Vice Admiral
Dabei seit
Feb. 2010
Beiträge
6.287
laengsterGang() liefert einen int zurück, also hast du den Wert in main().
 

Nai

Lt. Commander
Dabei seit
Aug. 2012
Beiträge
1.529
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:

tryitz

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2013
Beiträge
330
Vielen Dank für die Lösungsansätze. Ich werde schauen, was ich damit anfangen kann und gebe euch später eine Rückmeldung.
 
Top