Java – die besten Beiträge

Java auf Button-Eingabe warten lassen?

In meinem Java-Programm wird an einer Stelle ein neuer JDialog erstellt und ich möchte, dass die Klasse, über die den Dialog aufgerufen wird, solange wartet, bis in dem Dialog ein Button angeklickt wird.

Methode der Klasse Spiel:

public boolean handeln(Spieler aktuellerSpieler, Spieler Partner) {
  if (aktuellerSpieler == Partner) {
    JOptionPane.showMessageDialog(Spiel.this, "Sie können nicht mit sich selber handeln!", "FEHLER", JOptionPane.WARNING_MESSAGE);
    return false;
  }

  setVisible(false);
  Handel dialog = new Handel(aktuellerSpieler, Partner, Spiel.this);

  // Warte auf Button Eingabe in dialog
  return true;
}

Code der Dialog-Klasse:

public Handel(Spieler player1, Spieler player2, Spiel Instanz) {
  setVisible(true);

  setBounds(100, 100, 1030, 471);
  getContentPane().setLayout(new BorderLayout());
  contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
  getContentPane().add(contentPanel, BorderLayout.CENTER);
  contentPanel.setLayout(null);

  {
    JPanel buttonPane = new JPanel();
    buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
    getContentPane().add(buttonPane, BorderLayout.SOUTH);

    {
      JButton okButton = new JButton("BESTÄTIGEN!");
      buttonPane.add(okButton);
      getRootPane().setDefaultButton(okButton);
    }
  
    {
      JButton cancelButton = new JButton("Exit");
      buttonPane.add(cancelButton);
      cancelButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Handel.this.dispose();
          Instanz.setVisible(true);

          // Auf diesen Button soll gewartet werden.
        }
      });
    }
  }
}
Computer, programmieren, Java, Informatik

Taschenrechner in java (Variablentyp gesucht)?

Moin,

fange grad an mit einem Tutorial auf Youtube java zu lernen. Eine Aufgabe war es einen Taschenrechner zu bauen. Das war aber in dem Video ziemlich schlecht und ich dachte mir : " das kannst du besser".

Kurz gesagt wollte ich das man auswählen kann, ob man mal plus minus oder durch rechnet (konnte man in dem Video nicht). Jedoch will ich eine Variable, die das Operationszeichen speichern kann. Anscheinend geht int ja nicht.

Das ist der Code : beim Starten bekomme ich immer java: illegal start of expression

public class taschenrechner {

    public static void main(String[] args) {
        double zahl1, zahl2, ergebnis;
        int Operationszeichen;
        Scanner scanner = new Scanner(System.in);
        System.out.println("erste Zahl?");
        zahl1 = scanner.nextDouble();
        System.out.println("Operationszeichen bitte?");
        Operationszeichen = scanner.nextInt();
        System.out.println("2te Zahl bitte");
        zahl2 = scanner.nextDouble();
        if (Operationszeichen = + ) {
            ergebnis = zahl1 + zahl2;
            System.out.println(ergebnis); }
            else if (Operationszeichen = - ) {    
                ergebnis = zahl1 - zahl2;
                System.out.println(ergebnis);
            }
            else if (Operationszeichen = * ) {    
                ergebnis = zahl1 * zahl2;
                System.out.println(ergebnis);
        }
            else (Operationszeichen = / ) {      
                ergebnis = zahl1 / zahl2;
                System.out.println(ergebnis);
        }

        }
    }


Ich bekomme ausserdem in dem Code rot untertstrichene Stellen, aber keine Lösungsmöglickeit. https://prnt.sc/u6wazx

Danke schonmal im Vorraus

Computer, Mathematik, Java, Taschenrechner

Umgekehrte Polnische Notation / Postfix-Notation über Stack programmieren, so richtig?

Hallo,

ich soll die umgekehrte polnische Notation / Postfix-Notation in Java mit Hilfe eines Stacks programmieren. Dafür stehen mir nur folgende Informationen zur Verfügung:

public class IntegerStack {
  public boolean emptystack();
  public int head();
  public void push(int i);
  public int pop();
}

Leider zeigt ein Testfall als Fehler Folgendes an:

IntegerStack s = new IntegerStack();
String[] input = {"1", "2", "*", "3", "4", "*", "+"};
Calculator(input, s);
System.out.println(s.compareHistory(new String[] {
  "[1]",
  "[1, 2]",
  "[1]",
  "[]",
  "[2]",
  "[2, 3]",
  "[2, 3, 4]",
  "[2, 3]",
  "[2]",
  "[2, 12]",
  "[2]",
  "[]",
  "[14]",
  "[]" }
));

// erwartet:
true
// erhalten:
wrong history length: target 14 - is 0
false

Ich kann diesen Fehler nicht deuten. Kann mir bitte jemand sagen, was da falsch sein soll? Ich weiß nicht, was ich beheben soll.

Anbei mein Code:

public int Calculator(String[] input, IntegerStack s) {
  s = new IntegerStack();

  for (int i = 0; i < input.length; i++) {
    switch(input[i]) {
      case "+":
        int x = s.pop();
        int y = s.pop();

      
          s.push(y + x);
        
        break;
      case "-":
        x = s.pop();
        y = s.pop();

       
          s.push(y - x);
        
        break;
      case "/":
        x = s.pop();
        y = s.pop();

      
          s.push(y / x);
       
        break;
      case "*":
        x = s.pop();
        y = s.pop();

        
          s.push(y * x);
        
        break;
      case " ":
        break;
      default:
        if (input[i] != null) {
          s.push(Integer.parseInt(input[i]));
        }
        else {
        }
        ;
      }
    }

    int z = s.pop();
    return z;
  }
Computer, Freizeit, Studium, Schule, Mathematik, programmieren, Java, Informatik, Physik, stack, Algorithmen und Datenstrukturen

Meistgelesene Beiträge zum Thema Java