Methoden Java Hamster Simulator / returnValue

derdave

Neues Mitglied
Hallo zusammen.

Ich soll für eine Übung ein Java Hamster Programm schreiben, welches Dualzahlen addiert.
Ein Korn repräsentiert eine 1, kein Korn dementsprechend eine 0.
Die Umgebung soll mind. drei Zeilen haben: Zwei für die Eingabezahlen und eine für die Ausgabezahl.

Das Programm funktioniert soweit gut, allerdings gelingt es mir nicht eine Methode zu schreiben, die den Übertrag als returnValue in die mainfunktion zurückgibt.
Java:
//hamster startet oben rechts mit Blick nach unten.

void main() {

int i = 0;
int ueber = 0;
int rest = 0;

//----------------------------------------//

i = ueber;

ueber = 0;
rest = 0;

   if(kornDa()) i++;
   vor();
   if(kornDa()) i++;
   vor();
   if(kornDa()) i++;
   vor();
   if(kornDa()) i++;
   vor();

   ueber = i / 2;
   rest = i % 2;
   if (rest == 1) gib();
   moveback();                    // Bringt Hamster wieder in Zeile Eins, eine Spalte weiter links

//--------------------------------------//

Habe den Teil zwischen den Trennlinien einfach kopiert und x mal eingefügt. Damit läuft das Programm zwar, aber wirklich zufrieden bin ich damit nicht.

Ich möchte eigentlich eine Methode (rechner()) einfügen, die mir den Uebertrag (ueber) als ruturnValue zurückgibt. Dieser Wert soll dann wieder in die Methode (rechner()) usw.
Java:
public int rechner() {

int i = 0;
int rest = 0;

i = ueber;

   if(kornDa()) i++;
   vor();
   if(kornDa()) i++;
   vor();
   if(kornDa()) i++;
   vor();
   if(kornDa()) i++;
   vor();

   ueber = i / 2;
   rest = i % 2;
   if (rest == 1) gib();

return ueber;
}

um dann einfach sagen zu können:

void main() {

int ueber;

while (sonstwas) {
  rechner();
  moveback();
}
Muss ich ueber in der main und rechner Methode definieren bzw. wie 🙂?
Sitz jetzt schon 2 Stunden dran und würde mich sehr über Tipps und Anregungen freuen.

Danke im vorraus.
Dave
 
Zuletzt bearbeitet von einem Moderator:
Du musst auch mit dem returnwert von rechnen irgendwas machen, z.B.

Code:
um dann einfach sagen zu können:

void main() {

while (sonstwas) {
  int uebertrag = rechner();
  // jetzt steht der returnwert von rechner in der Variablen uebertrag
  moveback();
}
 
Danke!
Habe jetzt erst ohne Erfolg versucht die Variable uebertrag wieder in die Methode Rechnung zu bekommen um Sie mit dem counter i zu addieren.
Hab es jetzt aber anders lösen können und bin damit erstmal ganz zufrieden.

Java:
void main() {

    int anzahl = 0;
    int ueber = 0;
    int rest = 0;
   
    do  {
   
    anzahl = zaehler() + ueber;
    ueber = anzahl / 2;
    rest = anzahl % 2;
   
    if (rest == 1) gib();
   
    moveback();

    } while (anzahl != 0);       
}

public int zaehler() {

    int i = 0;

    if(kornDa()) i++;
    vor();
    if(kornDa()) i++;
    vor();
    if(kornDa()) i++;
    vor();
    if(kornDa()) i++;
    vor();
       
    return i;
}

void moveback() {

    linksUm();
    linksUm();
    vor();
    vor();
    vor();
    vor();
    linksUm();
    vor();
    linksUm();
}

Ich hab aus Jux jetzt noch ein Programm geschrieben das Octazahlen addiert. Ist im Prinzip das gleiche Programm. Nur muss der Hamster in dem Fall die Körner aufnehmen/ablegen um Sie zu zählen und für den übertrag bzw. den rest muss die anzahl / 8 bzw % 8.
Jetzt müsste es doch möglich sein die 2 aus dem Binär- bzw. die 8 aus dem Octarechner durch einen am anfang einzugebenen Integerwert zu ersetzen (ueber = anzahl / x) oder?

Danke nochmal!
 

Neue Themen


Zurück
Oben