DoWhile Schleife über mehrere Mothoden

Ta1to/Nox

Mitglied
Also ich habe ein kleines Programm schrieben erst nur für die Console und jetzt mit einem JFramen aber meine Do While schleife funktioniert nicht und jetzt wird der Vorhang nicht mehrmals ausgeführt wird.


Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Game implements ActionListener {
   
    int max = 1000;
    int min = 1;
    int temp;
   
    int guess = (max + min) / 2;
   
   
   
    JFrame jf = new JFrame();
    JButton bn1 = new JButton("1");
    JButton bn2 = new JButton("2");
    JButton bn3 = new JButton("3");
   
    do {
   
    public Game() {
       
       
       
        jf.setSize(400, 600);
        jf.setVisible(true);
        jf.setLocationRelativeTo(null);
       
        bn1.setBounds(45, 300, 100, 50);
        bn1.addActionListener(this);
        jf.add(bn1);
       
        bn2.setBounds(145, 300, 100, 50);
        bn2.addActionListener(this);
        jf.add(bn2);
       
        bn3.setBounds(245, 300, 100, 50);
        bn3.addActionListener(this);
        jf.add(bn3);
       
        JPanel panel = (JPanel) jf.getContentPane();
        panel.setLayout(null);
       
        JLabel jl = new JLabel("Noxinator");
        jl.setFont(new Font("Consolas", 0, 50));
        panel.add(jl);
        Dimension size = jl.getPreferredSize();
        jl.setBounds(70, 50, size.width, size.height);
       
       
        JLabel jl2 = new JLabel("Ist die gesuchte Zahl " + guess + " ?" );
        panel.add(jl2);
        jl2.setBounds(110, 160, 300, size.height);
       
        JLabel jl3 = new JLabel("Wenn dies übereinstimmt drücken sie die 1");
        panel.add(jl3);
        jl3.setBounds(70, 180, 300, size.height);
       
        JLabel jl4 = new JLabel("Wenn ihre Zahl kleiner ist drücken sie die 2");
        panel.add(jl4);
        jl4.setBounds(70, 200, 300, size.height);
               
        JLabel jl5 = new JLabel("Wenn ihre Zahl größer ist drücken sie die 3");
        panel.add(jl5);
        jl5.setBounds(70, 220, 300, size.height);
 
      
    }
     
      

    @Override
    public void actionPerformed(ActionEvent e) {
       
        if(e.getSource() == bn1) {
           
            Object[] options = { "OK"};

             JOptionPane.showOptionDialog(null, "Sie haben verloren", "Noxinator", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
             jf.hide();
            
           
           
        }else if(e.getSource() == bn2) {
           
            max = guess;
            guess = nextGuess(guess, max, min);
           
           
        }else if(e.getSource() == bn3) {
           
            min = guess;
            guess = nextGuess(guess, max, min);
       
        }

}while(temp !=);

     public static int nextGuess(int guess, int max, int min) {
   
    guess = (max + min) /2;
    return guess;

}
    }
 
Zuletzt bearbeitet von einem Moderator:
Pack den Code mal in Code-tags. So wie der geschrieben ist, kann er nicht mal kompilieren "while (temp!=);" ist keine gültige Anweisung. Und eine While schleife in einem actionperformed sieht auch komplett falsch aus. Damit blockierst du ggf. deine ganze Anwendung. Swing-Anwendungen sind event-gesteuert, das heißt, die Methode actionPerformed wird immer aufgerufen, wenn auf den entsprechend Button geklickt wird.
 
Wenn ich es richtig sehe, hast du folgendes vor:
Java:
do {
  public Game() {
  }
  public void actionPerformed(ActionEvent e) {
  }
} while (...);
Die Deklaration mehrerer Methoden innerhalb einer syntaktisch nicht erlaubten/inkorrekten Schleife zu packen, macht überhaupt keinen Sinn. Du willst eine Methode ja nicht 10 Mal deklarieren, sondern diese Methode 10 Mal ausführen. Darin besteht ein Unterschied. Die Deklaration einer Methode ist NICHT gleichzeitig ihre Ausführung. Schleifen und alle anderen Statements können nur innerhalb von Methoden und Konstruktoren (und Initializer Blöcken) geschrieben werden.
 

Zurück
Oben