Operatoren Stopp von Schleifen

Butterbrot

Aktives Mitglied
Guten Abend Community,

ich hätte mal eine Frage. Wenn ich jetzt mehrere verschachtelte if-Anweisungen und Schleifen habe, wie kann ich erzeugen, dass wenn 1 dieser Schleifen stoppt, die äußeren auch stoppen.
Beispiel:
Java:
public static boolean isPowerOfTwo(int[] number){

        boolean isPowerOfTwo = false;

        for(int i = 0; i < number.length; i++){
            if(number[i] == 1){
                for(int j = i; j < number.length; j++){
                    if(number[j] == 0){
                        isPowerOfTwo = true;
                       
                    }
                    else{
                        isPowerOfTwo = false;
                        break;
                    }
                   
                }
                break;
            }
            else{
                isPowerOfTwo = false;
            }

        }

Mit dem Code möchte ich herausfinden ob eine Binärzahl ein Vielfaches von zwei ist. Aber jedesmal kommt der Wert false zurück, auch wenn es ein Vielfaches von zwei ist. Ich vermute der Fehler liegt daran, dass einfach die for-schleifen weiterlaufen und nicht dann aufhören, wann ich es gerne haben möchte. Der Code ist dementsprechend fehlerhaft.

Danke im Voraus.
 

Thallius

Top Contributor
warum überhaupt die Variable isPowerOfTwo? Gib doch an der entsprechenden Stell einfach direkt true oder false mit return zurück
 

Butterbrot

Aktives Mitglied
Also ich weiß nicht was du konkret damit meinst. Die zweite for-schleife zum Beispiel möchte ich für das ganze Array durchspielen und erst dann einen true wert erhalten und nicht wenn ich eine Zahl gefunden habe, sofort true raushauen. Die zweite else Anweisung möchte ich auch nicht unbedingt, dass sie sofort einen boolean raushaut. Nur wenn das erste else einen Wert gefunden hat, möchte ich das das ganze dann stoppt. wenn die zweite if-Anweisung das Array durchgearbeitet hat, möchte ich, dass sie nur dann stoppt, wenn das ganze Array durchgearbeitet ist.
 

Bitfehler

Bekanntes Mitglied
Muss der von dir vorgeschlagene Ansatz verwendet werden?
Hier wäre mal eine Alternative als Denkanstoß:
Code:
//Wandelt die binäre Zahl c um
int decimalValue = Integer.parseInt(c, 2);

//Entsteht beim Teilen kein Rest, dann Vielfaches von 2
if((decimalValue%2)==0){
    //Vielfaches
}else{
   //Kein Vielfaches
}
 

tommysenf

Top Contributor
Das was du möchtest kannst du über ein labeled break erreichen.
Java:
public static boolean isPowerOfTwo(int[] number){

        boolean isPowerOfTwo = false;

   outer:
        for(int i = 0; i < number.length; i++){
            if(number == 1){
                for(int j = i; j < number.length; j++){
                    if(number[j] == 0){
                        isPowerOfTwo = true;
                  
                    }
                    else{
                        isPowerOfTwo = false;
                        break outer;
                    }
              
                }
            }
            else{
                isPowerOfTwo = false;
            }

        }

Siehe auch:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

Alternativ müsstest du eine boolean status variable zur Steuerung einfügen.
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Die lesbarste Variante deines Algorithmus wäre:
Java:
public static boolean isPowerOfTwo(int[] n) {
  int bits = 0;
  for (int i = 0; i < n.length; i++) {
    bits += n[i];
  }
  return bits == 1;
}

Doch wenn du ein fail-fast Verhalten implementieren willst, dann würde man das wie @Thallius gesagt hat - return statement - machen:
Java:
  public static boolean isPowerOfTwo(int[] n) {
    int bits = 0;
    for (int i = 0; i < n.length; i++) {
      bits += n[i];
      if (bits > 1) {
        return false;
      }
    }
    return bits == 1;
  }

PS: Willst du jetzt ein Vielfaches von 2 oder ob die Binärzahl in Form von 2^x ist?
 

Butterbrot

Aktives Mitglied
Ja genau ich wollte überprüfen ob die Zahl in Form von 2^x ist, tut mir leid, war anfangs anders gemeint. Und vielen Dank an Flown für den Code, ich hab viel zu kompliziert gedacht und hab nicht gedacht, dass man das auch so einfach machen kann. Ich weiß, eine fertige Funktion wird zwar oft nicht sehr gerne gesehen, aber das ist viel übersichtlicher als mein komplizierter Code. Nochmal vielen Dank an der Stelle.
 

Flown

Administrator
Mitarbeiter
Dein Ansatz ist ja nicht falsch, sondern du hast einfach das Problem, wann welche Bedingung gilt. Das heißt dein Code besitzt den Vorteil ohne Zwischenspeichervariable eine Lösung zu erzielen:
Java:
public static boolean isPowerOfTwo(int[] bits) {
    for (int i = 0; i < bits.length; i++) {
        if (bits[i] == 1) {
            for (int j = i + 1; j < bits.length; i++) {
                if (bits[j] == 1) {
                    return false;
                }
            }
            return true;
        }
    }
    return false;
}
 

Butterbrot

Aktives Mitglied
Genau sowas hab ich gesucht. Jetzt verstehe ich wenigstens die Syntax von solchen verketteten if-Anweisungen und for-schleifen, else Anweisungen sind also hier vollkommen überflüssig. Vielen Dank nochmal an der Stelle.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Stopp Feld programmieren für Spielbrett Java Basics - Anfänger-Themen 8
T schleifen Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
S Erste Schritte While Schleifen Java Basics - Anfänger-Themen 11
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
Mikejr Schleifen Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
K geschachtelte "for-Schleifen" Java Basics - Anfänger-Themen 3
Alen123 Potenzen in Schleifen Java Basics - Anfänger-Themen 26
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A Schleifen und Boolsche Ausdrücke Java Basics - Anfänger-Themen 42
W Schleifen Java Basics - Anfänger-Themen 36
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
Mojtaba1986 Hausaufgabe (Schleifen) Java Basics - Anfänger-Themen 33
A Schleifen Verzweigungen Java Basics - Anfänger-Themen 18
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
D Schleifen Problem Java Basics - Anfänger-Themen 2
H Muster mit verschachtelten Schleifen kreieren. Java Basics - Anfänger-Themen 2
A Schleifen in Java Java Basics - Anfänger-Themen 4
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
C Schleifen Durchlauf Java Basics - Anfänger-Themen 7
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
J Schleifen Wiederholendes Zeichenmuster Java Basics - Anfänger-Themen 4
K For-Schleifen Ablauf Java Basics - Anfänger-Themen 5
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Verschachtelte For Schleifen Java Basics - Anfänger-Themen 8
G Input/Output Schleifen Durchlauf Java Basics - Anfänger-Themen 5
A Erste Schritte Schleifen Java Basics - Anfänger-Themen 5
J Muster und Schleifen Java Basics - Anfänger-Themen 33
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
C Schleifen Java Basics - Anfänger-Themen 12
E geschachtelte for-schleifen Java Basics - Anfänger-Themen 6
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
A Erste Schritte for-Schleifen vereinfachen Java Basics - Anfänger-Themen 5
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
kokojamboo92 Schleifen und Arrays Java Basics - Anfänger-Themen 7
N Problem mit Schleifen Java Basics - Anfänger-Themen 20
O Array, geschachtelte For-Schleifen Java Basics - Anfänger-Themen 34
S While-Schleifen Ausgabe als String? Java Basics - Anfänger-Themen 1
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
D verschachtelte Schleifen Java Basics - Anfänger-Themen 6
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
L Schachbrettnummerierung mit Schleifen.. Java Basics - Anfänger-Themen 3
H Schleifen Java Basics - Anfänger-Themen 8
L Zahlentripel und for-Schleifen Java Basics - Anfänger-Themen 2
T Spezielle Aufgabe zu Schleifen Java Basics - Anfänger-Themen 3
T Erste Schritte Schleifen-Stop Java Basics - Anfänger-Themen 14
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
I Mehre While-Schleifen hintereinander Java Basics - Anfänger-Themen 13
P Terminieren diese Schleifen Java Basics - Anfänger-Themen 6
L Was heißt terminieren bei Schleifen? Java Basics - Anfänger-Themen 3
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
C Erste Schritte While-Schleifen-Problem Java Basics - Anfänger-Themen 3
W Schleifen bei Greenfoot Java Basics - Anfänger-Themen 4
K Loop ohne Schleifen Java Basics - Anfänger-Themen 2
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
E Muster auf der Konsole ausgeben lassen (Schleifen) Java Basics - Anfänger-Themen 7
C Erste Schritte Probleme bei Aufgaben zu Schleifen Java Basics - Anfänger-Themen 11
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Blöcke bei verschachtelten Schleifen Java Basics - Anfänger-Themen 3
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sternchenpyramide mit For-Schleifen erstellen Java Basics - Anfänger-Themen 9
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
arti28 Erste Schritte For-Schleifen und While-Schleifen, String als Muster ausgeben. Java Basics - Anfänger-Themen 3
T [Schleifen] Schleifenproblem Java Basics - Anfänger-Themen 4
F Verschachtelte Schleifen Java Basics - Anfänger-Themen 4
J Hilfe verschachtelte Schleifen Java Basics - Anfänger-Themen 5
O Geschachtelte For-Schleifen Java Basics - Anfänger-Themen 1
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
Z Frage zu for-Schleifen Java Basics - Anfänger-Themen 5
M Wie kann ich eine Ausgabe vervielfachen? (Schleifen) Java Basics - Anfänger-Themen 4
Z Schleifen Beispiel: Fakultät Java Basics - Anfänger-Themen 26
T Erneute Frage zu Schleifen Java Basics - Anfänger-Themen 4
V Schleifen die nicht voneinander abhängen! (für CAN-BUS) Java Basics - Anfänger-Themen 10
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
S for-Schleifen Problem Java Basics - Anfänger-Themen 4
W Methoden While Schleifen Ergebnis im String speichern Java Basics - Anfänger-Themen 5
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
J Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen Java Basics - Anfänger-Themen 1
X Methoden Logik-Problem mit Schleifen. Java Basics - Anfänger-Themen 7
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
W Aufgabe mit Schleifen Java Basics - Anfänger-Themen 8
M Sektkelch mit Schleifen Java Basics - Anfänger-Themen 9
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
N Schleifen Problem Java Basics - Anfänger-Themen 3
L Histogram mittels Schleifen und Arrays Java Basics - Anfänger-Themen 9
A Ausgabe von Schleifen nebeneinander? Java Basics - Anfänger-Themen 3
T durchlaufene while-Schleifen zählen Java Basics - Anfänger-Themen 3
L schleifen fehler Java Basics - Anfänger-Themen 12
X Array Ausgabe bei Verwendung von 2 Schleifen erklären Java Basics - Anfänger-Themen 8
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
J Schachbrett mit Hilfe von while-Schleifen Java Basics - Anfänger-Themen 10
F Nach Beendigung aller Schleifen von vorn anfangen, Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben