myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Java do while schleifen problem (https://mygully.com/showthread.php?t=2596948)

Meisterroper 26.03.12 18:24

Java do while schleifen problem
 
Hi leutz ich komm grad aufn punkt
Code:

import java.util.Scanner;
public class bersarker {
    public static void main(String[] args) {
      int i=0, j=0;
      int [] typ = {22,25,27,20};
      boolean Pos = false;
      boolean Pos1 = false;
      boolean Pos2 = false;
      boolean Pos3 = false;
      boolean Geraten = false;
      boolean Geraten2 = false;
      boolean Geraten3 = false;
      boolean Geraten4 = false;
      int [] getippt = new int [4];
      do {
      System.out.println ("Wir haben vier typen, Jeder ist in den 20igern. Zusammen sind sie 94 Jahre alt. Wie alt sind sie aber alleine? ");
      Scanner eingabe = new Scanner (System.in);
      getippt [0] = eingabe.nextInt();
      getippt [1] = eingabe.nextInt();
      getippt [2] = eingabe.nextInt();
      getippt [3] = eingabe.nextInt();
     
        if (getippt[0] == typ [0]){
          Pos = true;
            i++;
            j++;
        }
        else
        if (getippt[0] == typ[1] ||getippt[0] == typ[2] ||getippt[0] == typ[3]) {
                Geraten = true;
                  i++;
        }

        if (getippt[1] == typ[1]){
            Pos1 = true;
                i++;
                j++;
        }
        else
        if (getippt[1] == typ[0] ||getippt[1] == typ[2] ||getippt[1] == typ[3]) {
                Geraten2 = true;
                  i++;
        }
     
        if (getippt[2] == typ [2]){
              Pos2 = true;
                i++;
                j++;
        }
        else
        if (getippt[2] == typ[0] ||getippt[2] == typ[1] ||getippt[2] == typ[3]) {
                Geraten3 = true;
                  i++;
        }
     
        if (getippt[3] == typ [3]){
              Pos3 = true;
                i++;
                j++;
        }
        else
        if (getippt[3] == typ[0] ||getippt[3] == typ[1] ||getippt[3] == typ[2]) {
                Geraten4 = true;
                  i++;
        }
        }
        while (i == 4 && j == 4);
        if (Pos == true && Pos1 == true && Pos2 == true && Pos3 == true){
          System.out.print("Glückwunsch du hast jedes alter erraten!"+j);
        }
        else{
            System.out.println("Teffer : " +i);
        System.out.println("Aber leider nicht in der richtigen rheienfolge!");
        }
  }

}

wo liegt der fehler wenn man alle richtig eingibt und die position auch richtig ist wiederholt sich alles wenn aber nur die position oder die zahl generell falsch ist beendet sich das Programm. Warum ???

Fire.Storm 26.03.12 19:32

Mach das nächste mal ein paar Kommentare rein oder erklär wenigstens was das überhaupt generell tun soll.
Ich weiß nämlich nicht so richtig was du da überhaupt machst, aber sehn wir davon mal ab.
Wahrscheinlich liegt den Fehler in der while-Bedingung.
Code:

while (i == 4 && j == 4);
Die sagt im Prinzip so viele wie, dass deinen Schleife solange durchgeführt wird wie i == 4 und j == 4 ist.
Das dürfte aber nur der Fall sein, wenn du alles richtig geraten hast. (zu Mindest glaub ich das aus dem Code rauslesen zu können)
Richtig wäre vermutlich
Code:

while (i != 4 || j != 4);
Aber so richtig wissen tu ichs jetzt auch nicht, weil ich den Code einfach nich durchschau.

Was machen die Variablen i und j?
Für was sind die Pos Variablen gut?
Und für was sind die Variablen Geraten gut, obwohl du sie praktisch nur auf true setzt und sonst nirgendwo verwendest?

waldfee0071 27.03.12 01:26

die geraten-variablen werden nirgends benutzt und die while schleife funktioniert nicht, da die niedlichen geschwungenen klammern fehlen und n selikolon dahinter ist.

Code:

   
while (i == 4 && j == 4)
 {
  if (Pos == true && Pos1 == true && Pos2 == true && Pos3 == true)
 {
    System.out.print("Glückwunsch du hast jedes alter erraten!"+j);
 }
  else
 {
    System.out.println("Teffer : " +i);
    System.out.println("Aber leider nicht in der richtigen reihenfolge!");
 }

ich hab zwar keine ahnung von java, aber so machts auf jeden fall mehr sinn

Your_Conscience 27.03.12 06:00

Was hat denn das Programm für eine Logik?
Woher soll man wissen, dass wenn 4 Personen zusammen 94 sind, man 22, 25, 27, 20 eingeben muss? 22, 23, 24, 25 ist genauso richtig.

Und wie willst du es denn haben? Soll es sich, unabhängig von der Eingabe, unendlich oft wiederholen?

jon.west 27.03.12 08:42

Wieso soll es keine Logik haben? ;) Vielleicht soll man ja das Alter von 4 BESTIMMTEN Personen raten - weißt du ja nicht ;)

Wieso man immer alles mies reden muss, verstehe ich nicht :rolleyes: Lasst dem Jungen doch seinen Spaß :T

Meisterroper 27.03.12 19:10

Wenn ich die while schleife mit {..} mache geht das nicht. nur ; ist erlaubt und ausserdem wenn du die else bedingung ließt siehst du wie viele treffe du hast aber das sie halt nicht in der richtigen rheienfolge liegen. und das mit dem != klappt teils den rest muss ich nochmal ausprobieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.