Fehler mit Boolean. (Glaube ich zumindest)

lordderlamas

Mitglied
Hallo,
Ich habe einen Fehler bei einem Programm, das ic hgeschrieben habe. Ich mache das noch nicht so lange und kann deswegen nur spekulieren warum das nicht funktioniert.
Hier ist mein Programm:
Java:
package com.company;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyFrame extends JFrame implements ActionListener {

    JButton button;
    JButton upgrade;
    JButton shop;
    JLabel labelcoins;
    JLabel labelcost;
    JLabel labelcoinsperclick;
    ImageIcon icon;
    ImageIcon upgradearrow;
    ImageIcon shopicon;

    double coins = 0;
    double more = 1;
    double cost = more * 1.006;
    boolean shopvalue true;

    MyFrame() {
        icon = new ImageIcon("src/dogecoin-shop.png");
        icon.setImage(icon.getImage().getScaledInstance(95,95,Image.SCALE_DEFAULT));

        upgradearrow = new ImageIcon("src/upgrade_rrow.png");
        upgradearrow.setImage(upgradearrow.getImage().getScaledInstance(45,45,Image.SCALE_DEFAULT));

        shopicon = new ImageIcon("src/shophauspng.png");
        shopicon.setImage(shopicon.getImage().getScaledInstance(35,35,Image.SCALE_DEFAULT));

        labelcost = new JLabel();
        labelcost.setVisible(true);
        labelcost.setLocation(0, 360);
        labelcost.setSize(500,20);
        labelcost.setText("Upgrade Kosten: " + 1.006 + " Coins");
        labelcost.setFont(new Font("Comic Sans", Font.BOLD, 15));
        labelcost.setHorizontalAlignment(JLabel.CENTER);

        labelcoinsperclick = new JLabel();
        labelcoinsperclick.setVisible(true);
        labelcoinsperclick.setLocation(0, 175);
        labelcoinsperclick.setSize(500,20);
        labelcoinsperclick.setText("Du kriegst: " + 1 + " pro Klick");
        labelcoinsperclick.setFont(new Font("Comic Sans", Font.BOLD, 15));
        labelcoinsperclick.setHorizontalAlignment(JLabel.CENTER);

        labelcoins = new JLabel();
        labelcoins.setVisible(true);
        labelcoins.setLocation(0, 160);
        labelcoins.setSize(500,20);
        labelcoins.setText("Deine Coins betragen: " + coins);
        labelcoins.setFont(new Font("Comic Sans", Font.BOLD, 15));
        labelcoins.setHorizontalAlignment(JLabel.CENTER);

        button = new JButton();
        button.setBounds(200, 50, 100, 100);
        button.addActionListener(this);

        button.setFocusable(false);
        button.setHorizontalTextPosition(JButton.CENTER);
        button.setVerticalTextPosition(JButton.BOTTOM);
        button.setFont(new Font("Comic Sans", Font.BOLD, 25));
        button.setIconTextGap(-15);
        button.setForeground(Color.MAGENTA);
        button.setBackground(Color.white);
        button.setBorder(null);
        button.setIcon(icon);

        shop = new JButton();
        shop.setBounds(25, 300, 35, 35);
        shop.addActionListener(this);
        shop.setIcon(shopicon);

        shop.setFocusable(false);
        shop.setHorizontalTextPosition(JButton.CENTER);
        shop.setVerticalTextPosition(JButton.BOTTOM);
        shop.setFont(new Font("Comic Sans", Font.BOLD, 25));
        shop.setForeground(Color.blue);
        shop.setBackground(Color.white);
        shop.setBorder(null);

        upgrade = new JButton();
        upgrade.setBounds(225, 300, 50, 50);
        upgrade.addActionListener(this);
        upgrade.setIcon(upgradearrow);

        upgrade.setFocusable(false);
        upgrade.setHorizontalTextPosition(JButton.CENTER);
        upgrade.setVerticalTextPosition(JButton.BOTTOM);
        upgrade.setFont(new Font("Comic Sans", Font.BOLD, 25));
        upgrade.setForeground(Color.blue);
        upgrade.setBackground(Color.white);
        upgrade.setBorder(null);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(null);
        this.setSize(500, 500);
        this.setVisible(true);
        this.add(button);
        this.add(labelcoins);
        this.add(upgrade);
        this.add(labelcost);
        this.add(labelcoinsperclick);
        this.add(shop);
        this.setTitle("Button Clicker");
        this.getContentPane().setBackground(Color.white);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button) {
            System.out.println("clicked");
            coins = coins + more;
            double newcoins = Math.round(coins*10.0)/10.0;
            System.out.println(coins);
            labelcoins.setText("Deine Coins betragen: " + newcoins);
        }

        if (coins - cost >= 0){
            if (e.getSource() == upgrade) {
                more = more * 1.005;
                coins = coins - cost;
                cost = more * 1.006;
                double newcoins = Math.round(coins*10.0)/10.0;
                double newcost = Math.round(cost*10.0)/10.0;
                labelcost.setText("Upgrade Kosten: " + newcost + " Coins");
                labelcoins.setText("Deine Coins betragen: " + newcoins);
                labelcoinsperclick.setText("Du kriegst: " + newcost + " pro Klick");
            }
        }

        if (shopvalue = true) {
            if (e.getSource() == shop){
                shopvalue = false;
                labelcost.setVisible(false);
                upgrade.setVisible(false);
            }
        }

        if (shopvalue = false) {
            if (e.getSource() == shop){
                shopvalue = true;
                labelcost.setVisible(true);
                upgrade.setVisible(true);
            }
        }
    }
}

Es geht vor allem um den unteren Teil:

Java:
if (shopvalue = true) {
            if (e.getSource() == shop){
                shopvalue = false;
                labelcost.setVisible(false);
                upgrade.setVisible(false);
            }
        }

        if (shopvalue = false) {
            if (e.getSource() == shop){
                shopvalue = true;
                labelcost.setVisible(true);
                upgrade.setVisible(true);
            }
        }

Es soll damit quasi ein Shop geöffnet werden, es wieder beim drauf klicken aber nur ein mal geschlossen und kann beim weiteren klicken nicht mehr geöffnet werden. Ich glaube dass die boolean Variable shopvalue nicht richtig auf false gesetzt wird.
Ich bin über alle Antworten froh.
L. G. lordderlamas
 

KonradN

Super-Moderator
Mitarbeiter
= ist eine Zuweisung
== ist ein Vergleich
Dein
Java:
if (shopvalue = false)
dreht shopvalue auf false und prüft dann, so dass der Block nie ausgeführt wird.

Also statt dessen:
Java:
if (shopvalue == false)

Oder besser:
Java:
if (!shopvalue)
(Bei boolean Variablen braucht man kein Vergleich mehr)
 

KonradN

Super-Moderator
Mitarbeiter
Hinzu kommt, dass du im true Fall es auf false setzt und du dann im Anschluss prüfst, ob es false ist.

Also ist da ein if else angebracht.
 

Staarfightaar

Bekanntes Mitglied
außerdem prüfst du in jedem fall ob e.getSource == shop ist... wenn du es umdrehst
Java:
        if (shopvalue = true) {
            if (e.getSource() == shop){
                shopvalue = false;
                labelcost.setVisible(false);
                upgrade.setVisible(false);
            }
        }

        if (shopvalue = false) {
            if (e.getSource() == shop){
                shopvalue = true;
                labelcost.setVisible(true);
                upgrade.setVisible(true);
            }
        }
zu
da du 2 mal den gleichen code hast nur mit geflippten bool könntest du die methode auslagern
Java:
   if (e.getSource() == shop) {

           if (shopvalue == true) {

                flipVisibility(false)

             }

           else{

                flipVisibility(true);

            }

        }

public void flipVisibility(boolean visibility){
               shopvalue = visiblility;

                labelcost.setVisible(visibility);

                upgrade.setVisible(visibility);
}

fällt schon mal ein vergleich weg und doppelter code weg..

die ausführung ist im prinzip immer das gegenteil von shopvalue == true dh
der code wird zu

Java:
 if (e.getSource() == shop)
 {
        flipVisiblity(!(shopvalue == true))
 }


public void flipVisibility(boolean visibility){

               shopvalue = visiblility;


                labelcost.setVisible(visibility);


                upgrade.setVisible(visibility);

}
und aus dem
(!(shopvalue == true))
kannst du weil boolean

das machen


und tadaaaaaaaaaa .. aus 15 zeilen 5 gemacht und lesbarkeit erhöht
 

lordderlamas

Mitglied
= ist eine Zuweisung
== ist ein Vergleich
Dein
Java:
if (shopvalue = false)
dreht shopvalue auf false und prüft dann, so dass der Block nie ausgeführt wird.

Also statt dessen:
Java:
if (shopvalue == false)

Oder besser:
Java:
if (!shopvalue)
(Bei boolean Variablen braucht man kein Vergleich mehr)
Hallo,
Es funktioniert.
Danke
 

lordderlamas

Mitglied
außerdem prüfst du in jedem fall ob e.getSource == shop ist... wenn du es umdrehst
Java:
        if (shopvalue = true) {
            if (e.getSource() == shop){
                shopvalue = false;
                labelcost.setVisible(false);
                upgrade.setVisible(false);
            }
        }

        if (shopvalue = false) {
            if (e.getSource() == shop){
                shopvalue = true;
                labelcost.setVisible(true);
                upgrade.setVisible(true);
            }
        }
zu
da du 2 mal den gleichen code hast nur mit geflippten bool könntest du die methode auslagern
Java:
   if (e.getSource() == shop) {

           if (shopvalue == true) {

                flipVisibility(false)

             }

           else{

                flipVisibility(true);

            }

        }

public void flipVisibility(boolean visibility){
               shopvalue = visiblility;

                labelcost.setVisible(visibility);

                upgrade.setVisible(visibility);
}

fällt schon mal ein vergleich weg und doppelter code weg..

die ausführung ist im prinzip immer das gegenteil von shopvalue == true dh
der code wird zu

Java:
 if (e.getSource() == shop)
 {
        flipVisiblity(!(shopvalue == true))
 }


public void flipVisibility(boolean visibility){

               shopvalue = visiblility;


                labelcost.setVisible(visibility);


                upgrade.setVisible(visibility);

}
und aus dem

kannst du weil boolean

das machen



und tadaaaaaaaaaa .. aus 15 zeilen 5 gemacht und lesbarkeit erhöht
Hallo, danke für die Antwort.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Fehler: <ID> erwartet Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
Pinhg Discord JDA Bot - Fehler Allgemeine Java-Themen 3
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
O Fehler bei Variablen Allgemeine Java-Themen 2
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
C Fehler bei der Benutzung von itextpdf Allgemeine Java-Themen 1
U Fehler beim Compillieren Allgemeine Java-Themen 13
x46 String Format Fehler Allgemeine Java-Themen 2
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Fehler bei IF abfrage Allgemeine Java-Themen 8
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
M Einheitenrechner - Fehler Allgemeine Java-Themen 12
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
T Denk-Fehler? Allgemeine Java-Themen 4
A Finde den Fehler nicht. Allgemeine Java-Themen 7
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
D Unbekannter Fehler Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
L Fehler bei der Ausführung einer Jar Allgemeine Java-Themen 2
T OOP Fehler im Design Allgemeine Java-Themen 9
Thallius Unfassbarer Fehler. Brauche Ideen zum Debuggen Allgemeine Java-Themen 9
U Eclipse MANIFEST fehler Allgemeine Java-Themen 7
I Fehler bei HashMaps Darstellung Allgemeine Java-Themen 10
R Classnotfoundexception Fehler Allgemeine Java-Themen 3
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
N Prim's Algorithm - wo ist der Fehler? Allgemeine Java-Themen 3
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
M Line-Fehler Allgemeine Java-Themen 8
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
V AudioInputStream Fehler Allgemeine Java-Themen 1
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
G Fehler mit Vector Allgemeine Java-Themen 3
F Java Fehler "buildTableModel" Allgemeine Java-Themen 3
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
DanielsLPecke Input/Output Arduino komischer Fehler. Allgemeine Java-Themen 38
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
S Hashtable Fehler Allgemeine Java-Themen 14
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
K Was ist mein Fehler? Allgemeine Java-Themen 2
Tausendsassa Compiler-Fehler Fertiges Programm mit Fehler Allgemeine Java-Themen 10
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Eclipse - Fehler: Hauptklasse de.xyz.init.MeineKlasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
Seikuassi Swing Stehe auf dem Schlauch...(BufferedReader_Writer-Fehler?) Allgemeine Java-Themen 4
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
B Fehler bei einem Programm Allgemeine Java-Themen 10
F HILFEEEEEE JAVA Fehler - Tiny Umbrella Allgemeine Java-Themen 1
N JavaFX IndexOutOfBounds-Fehler Allgemeine Java-Themen 11
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
S Ganzes Programm "stucked" - JVM-Fehler? Allgemeine Java-Themen 2
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
B Eclipse Fehler in eclipse/Java Allgemeine Java-Themen 13
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
J Fehler beim parsens eine Datums Allgemeine Java-Themen 3
A Thread Fehler absichtlich provozieren Allgemeine Java-Themen 3
J Compiler-Fehler .nextLine fehler Allgemeine Java-Themen 3
B Fehler im Java-Code Allgemeine Java-Themen 4
S Java Fehler bei Konsolenprogramm Allgemeine Java-Themen 2
N Was ist ein Fehler (Requirement-Engineering) Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
T Programm bleibt ohne Fehler stehen Allgemeine Java-Themen 4
G Fehler beim instanzieren einer Generischen Klasse Allgemeine Java-Themen 5
K Eclipse Fehler beim Ausführen meines Programms in Eclipse Allgemeine Java-Themen 11
K Input/Output Fehler bei Dateierzeugung Allgemeine Java-Themen 7
M Fehler bei Remoteinstallation von Java Allgemeine Java-Themen 5
M Fehler bei Verwendung von TexturePaint Allgemeine Java-Themen 16
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
G Merkwürdiger Fehler NetBeans Allgemeine Java-Themen 2
G Native Library / Fehler beim Laden der .so/.dll Datei Allgemeine Java-Themen 17
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
iB0T Unverständlicher Fehler Allgemeine Java-Themen 5
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
S Fehler mit JScrollPane Allgemeine Java-Themen 4
K SimpleDateFormat Fehler Allgemeine Java-Themen 3
M import Fehler Allgemeine Java-Themen 2
M Startdatei konnte nicht geparst werden. Fehler in Zeile 0 Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben