Etwas nur ausführen wenn sich ein boolean ändert (Java)?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

boolean static oldStatus=false;

    @Override
public void run(){
while ((true)){ if (status==oldStatus){
                    Thread.sleep(100);
                  } else {
                    oldStatus=status; 

if(STATUS==true){
runOnUiThread(new Runnable() {
@Override
public void run() {
rel.setText("Verbunden!");
b_rel.setEnabled(false);
b_dir.setEnabled(true);
}
});
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
b_rel.setEnabled(true);
rel.setText("Konnte nicht verbinden!");
b_dir.setEnabled(false);
}
});
}
}
}
}




Sorry - Formattierung spinnt.
Der Trick ist den vorherigen Status in einer separaten Variable zu speichern und nur wenn der aktuelle Status vom vorherigen Status abweicht etwas zu tun - und dann die Variable des vorherigen Status auf den Wert des aktuellen Status zu setzen




Hallo!

Habe zwar nicht wirklich dein Problem verstanden, aber der Code siehjt komisch aus

 @Override
public void run(){
while ((!STATUS)){
 runOnUiThread(new Runnable() {...}
} ); /* end while */
runOnUiThread(new Runnable() {
@Override
public void run() {
rel.setText("Verbunden!");
b_rel.setEnabled(false);
b_dir.setEnabled(true);
}
});
}
}
}

Ich würde ihn, erstmal rein optisch, so wie obern umbauen -- und sehen was passiert.

Brauchst du wirklich eine Schleife? 

Ich würde dir den Tipp geben: Schau dir mal Observer und Observable an. Sodass du deinen Code nur dann ausführst wenn sich der Wert ändert.

Wie kann ich mit Java app programmieren?

Guten Tag!

Ich interessiere mich sehr für das programmieren mit Java, und möchte mal eine App programmieren. Ich kann schon simple Sachen wie Variablen erstellen:

int Beispiel = 10;
String Beispiel = "Beispiel";

Oder aber auch andere:

int beispiel = 10;
String fertig = "Yey, es ist 10! :D";

If (beispiel = 11){ beispiel = 13; }

else If (beispiel = 10){
  System.out.println(fertig);

Oder:

int beispiel = 10;
Boolean tot = false;
Boolean kaputt = false;

While (beispiel > 0){
  beispiel--;
  System.out.println("Beispiel hat den Wert" & beispiel)
  If (beispiel = 0){ 
    tot = true;
    If (tot = true){ 
      kaputt = true;
      If (kaputt = true){
        ""Egaaalllll""
      }
    }
  }
}

...zur Frage

Java: in eine if-Anweisung eine while-Schleife einbauen?

Hallo! :)

Ich bin derzeit dabei, das Programmieren mit Java zu lernen und beschäftige mich gerade mit if-/else-Anweisungen und Schleifen.

Ich habe eine Aufgabe bearbeitet und dabei eine while-Schleife in eine if-Anweisung gesetzt, also, falls die Bedingung für die if-Abfrage wahr ist, soll unter anderem die while-Schleife ausgeführt werden, jedoch funktioniert das Programm so nicht.

Jetzt frage ich mich, ob es blöd ist, eine while-Schleife in eine if-Anweisung einzubauen? :D

Danke!

...zur Frage

Java frage zu boolean?

public static void main (string [] args){ System.out.println(welcheKleidung(false));}

public static String welcheKleidung (boolean esRegnet){ if (esRegnet){ return "regenjacken"} else { return "winterjacke"}

woher soll man hier nun wissen was raus kommt? es wurde ja nicht definiert , was false und was true ist?

...zur Frage

Java Primzahlen Programm

Hey Leute, ich habe mal wieder eine Java-Aufgabe, bei welcher ich den Fehler nicht finde. Ich hoffe ihr könnt mir irgendwie weiterhelfen.

public class PrimeNumbers {

static int x = 1000;
private static boolean[] Primes = new boolean[x];

// Hier ist der "statische Konstruktor"
static {
}

private static boolean checkPrime(int number) {

    return false;
}

public static boolean isPrime(int number) {
    int limit=1000;
    int zahl;      
    int zaehler;   
    boolean primzahl; 

    for (zahl = 2; zahl <= limit; zahl++) {
        primzahl = true;

        for (zaehler = 2; zaehler <= zahl/2; zaehler++) {
            if (zahl % zaehler == 0) {
                primzahl = false;
              break;
            }

        }

        if (primzahl) {
            return true;
        }
    }
    return false;
}

Die Primzahlen, welche zu überprüfen sind werden in einer anderen Methode übergeben und abefragt. Ich habe hier das Problem, dass er mir entweder immer true oder immer false returned, egal ob es nun eine Primzahl ist oder nicht. Ich komme einfach nicht weiter, egal wie ich es drehe und wende. Ich hoffe ihr könnt mir weiterhelfen.

Grüße Dubsepp

...zur Frage

[SOLVED] Minecraft Bukkit: Boolean aus YML-File auslesen?

Sehr geehrte GuteFrage.net-User,

ich programmieren schon seit einiger Zeit, habe aber eine mehr oder weniger lange Pause gemacht und bin gerade ein einem YML-File am verzweifeln..

Und zwar möchte ich einen Boolean, der in dieser gespeicher ist auslesen, prüfen ob er "true" oder "false" ist.

Mein CODE (MAINCLASS):

 public class main extends JavaPlugin{
    public static File file = new File("plugins/TEST", "TestConfig.yml");
    public static YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
        public void onEnable{
        cfg.set("TestBoolean", true);
        if(!file.exists()){
        try {
            cfg.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }

Und dann die if-Abfrage (Habe mehere Sachen versucht..):

        boolean test = main.cfg.getBoolean("TestBoolean");

        Player p = (Player) sender;
      1.  if(main.cfg.getBoolean("TestBoolean") == true){
      2.  if(main.cfg.getBoolean("TestBoolean", true)){
      3.  if(main.cfg.getBoolean("TestBoolean")){
      4.  if(main.cfg.getBoolean("TestBoolean") == true){
      5.  if(test == true){
        p.sendMessage("Erfolg!")

Meine CONFIG:

------------------------------------

TestBoolean: true

------------------------------------

EDIT:

Habe es gefixt, indem ich statt cfg.set("TestBoolean", true), cfg.addDefault("TestBoolean", true) genommen habe und diese if-Abfrage benutzt habe:

 if(main.cfg.getBoolean("TestBoolean")){

Meine Frage ist: Was mache ich falsch?

Ich hoffe ihr könnt mir helfen!

LG

...zur Frage

Was möchtest Du wissen?