Und-Abfrage mit mehreren Ungleich-Operatoren

Sim00

Mitglied
Hallo zusammen!
Das Codebeispiel unten ist einer von mehreren gleich aufgebauten Blöcken in einer längeren Methode, von der ansonsten auch alles funktioniert wie es soll, nur eben diese Blöcke nicht. Die Variable min ist 0 und max ist 25. Was ich erreichen möchte, ist, dass erst eine Zufallszahl b zwischen 0 und 25 (einschließlich) erzeugt wird, und zwar so oft, bis sie einer der darunter aufgeführten Zahlen entspricht, was ich probiert habe mit den Ungleich Operatoren zu lösen.
Kann mir jemand sagen wo das Problem liegt, und/oder wie man das eventuell eleganter lösen könnte?
Vielen Dank im Voraus :)

Java:
else if(array1[i-1]=="C"){

int b = (int)(Math.random()*(max-min+1)+min);

                        while(b!=0 & b!=4 & b!=7 & b!=8 & b!=10 & b!=11 & b!=13 & b!=14 & b!=17 & b!=19& b!=20& b!=24){

                            b = (int)(Math.random()*(max-min+1)+min);

                        }

                        String a = Umwandeln.ZuBuchstabe(b);       

                        array1 = a;

}
 

Meeresgott

Bekanntes Mitglied
Die Abfrage & ist Bitweise was du brauchst wäre in dem Kontext && und && würde nur bedingt Sinn machen, da Variable b nicht gleich 0 und gleich 4 und gleich 7 usw. sein kann. Was du brauchst wäre ein oder ||
 

Sim00

Mitglied
Die Abfrage & ist Bitweise was du brauchst wäre in dem Kontext && und && würde nur bedingt Sinn machen, da Variable b nicht gleich 0 und gleich 4 und gleich 7 usw. sein kann. Was du brauchst wäre ein oder ||
Wie LimDul sagt, || funktioniert nicht.
Ein Oder wäre an der Stelle Unfug und immer true. Das oder müsste dann auf == gehen.
Du hast da ein bitweises und drin - das logische und ist "&&"
Hätte ich vielleicht dazu sagen sollen, ich hatte zuerst denn &&-Operator drin, der hat allerdings auch nicht funktioniert.
 

LimDul

Top Contributor
Definiere "funktioniert nicht". Sprich - was ist exakt ist passiert und kam raus.

Funktioniert nicht ist so hilfreich wie wie bei der Werkstatt anzurufen "Mein Auto tuts nicht, was kann ich tun" :)
 
K

kneitzel

Gast
Die Abfrage & ist Bitweise was du brauchst wäre in dem Kontext && und && würde nur bedingt Sinn machen, da Variable b nicht gleich 0 und gleich 4 und gleich 7 usw. sein kann. Was du brauchst wäre ein oder ||
Also der Hinweis mit dem && für den logischen Ausdruck ist richtig. Aber es funktioniert prinzipiell auch mit dem binären &.
Und die Und Verknüpfung ist auch ok.

Daher wäre die Frage, was Deiner Meinung nach nicht funktioniert?

Java:
public class Test {
    public static void main(String[] args) {
        int b;
        do {
            b =(int)(Math.random()*10);
            System.out.println(b);
        } while (b!=1 & b!=2 & b!=3);
        System.out.println("Ergebnis: " + b);
    }
}

Also hier ist einfach nur die Frage, was Deiner Meinung nach nicht funktioniert.

Er läuft so lange durch, bis er 1, 2 oder 3 hat und gibt dies dann als Ergebnis:

Java:
java helloworld\Test.java
5
6
0
3
Ergebnis: 3
 
K

kneitzel

Gast
Ach ja - bezüglich & | und ^ mit boolean Ausdrücken: JLS 15.22.2 - da wird das Verhalten definiert und damit ist das natürlich eine gültige Schreibweise.
 
K

kneitzel

Gast
Warum fällt mir das auch immer jetzt erst ein, wenn etwas fertig geschrieben ist: Die Frage ist doch, was der Unterschied zwischen & und && ist.
Man nehme nur die folgenden zwei Ausdrücke:
Java:
f(x) & g(y)
f(x) && g(y)
Der erste Ausdruck wird immer f(x) und g(x) ausführen.
Der Zweite Ausdruck ist abhängig von der Evaluierung:
Wenn f(x) schon false ist, dann steht das Ergebnis des Ausdrucks (false) schon fest und er muss g(y) nicht mehr ausführen.

Daher gibt es auch nur && und || und kein ^^ (xor). Denn ein conditional xor macht keinen Sinn. Egal was der erste Ausdruck ist: der zweite Ausdruck wird das Endergebnis beeinflussen.
 

Sim00

Mitglied
Also der Hinweis mit dem && für den logischen Ausdruck ist richtig. Aber es funktioniert prinzipiell auch mit dem binären &.
Und die Und Verknüpfung ist auch ok.

Daher wäre die Frage, was Deiner Meinung nach nicht funktioniert?

Java:
public class Test {
    public static void main(String[] args) {
        int b;
        do {
            b =(int)(Math.random()*10);
            System.out.println(b);
        } while (b!=1 & b!=2 & b!=3);
        System.out.println("Ergebnis: " + b);
    }
}

Also hier ist einfach nur die Frage, was Deiner Meinung nach nicht funktioniert.

Er läuft so lange durch, bis er 1, 2 oder 3 hat und gibt dies dann als Ergebnis:

Java:
java helloworld\Test.java
5
6
0
3
Ergebnis: 3
Bei mir gibt er "null" zurück, dann liegt das Problem scheinbar woanders?
 
K

kneitzel

Gast
Bei mir gibt er "null" zurück, dann liegt das Problem scheinbar woanders?
Wo gibt es null zurück. Ich sehe in dem Code-Abschnitt kein return Befehl.
Aber Du kannst ja einfach Ausgaben einbauen.
Gib das b aus, ehe Du Umwandeln.ZuBuchstabe(b); aufrufst. Gib das Ergebnis aus, das da zurück kommt.

Aber b ist ein int. Ein int kann nie null sein.
 

Sim00

Mitglied
Da das Problem sich wohl im Aufbau der restlichen Methode verbirgt, hier einmal die vollständige Methode. Der else if Block kommt danach noch für alle anderen Buchstaben nur mit anderen Bedingungen, die hab ich jetzt der Übersichtlichkeit halber mal ausgelassen. Aktuell ist die Ausgabe (beispielhaft):
Namegenerator.main({ });
Enullnullnullnull
Fnullnullnullnull
Onullnullnullnull
Unullnullnullnull
Knullnullnullnull
Anullnullnullnull
Znullnullnullnull
Unullnullnullnull
Wnullnullnullnull
Cnullnullnullnull

Java:
 public static void main( String args[] )   
    { 
        for(int k = 0; k < 10; k++) {   
            int min =0;
            int max=25;

            StringBuilder line1 = new StringBuilder();     
            int j = 5;                                     
            String [] array1 = new String[j];             

            for(int i = 0; i < array1.length; i++) {

                if(i==0){
                    int b = (int)(Math.random()*(max-min+1)+min);
                    String a = Umwandeln.ZuBuchstabe(b);         
                    array1[i] = a;
                }

                else if{
                    if(array1[i-1]=="A"){
                        int b = (int)(Math.random()*(max-min+1)+min);
                        while(b!=1 & b!=2 & b!=3 & b!=5 & b!=6 & b!=7 & b!=9 & b!=11 & b!=12 & b!=13& b!=14& b!=15 & b!=16 & b!=17 & b!=18 & b!=19 & b!=21 & b!=22 & b!=23 & b!=24 & b!=25 )
                        {
                            b = (int)(Math.random()*(max-min+1)+min);
                        }
                        String a = Umwandeln.ZuBuchstabe(b);         
                        array1[i] = a;
                    }
                    
            for(int i = 0; i < array1.length; i++) {     
                line1.append(array1[i]);                   
            }

            System.out.println(line1);
        }
    }
 
K

kneitzel

Gast
Also das ist nicht dein Code, der irgend eine Ausgabe bringt, denn der Code ist so nicht übersetzbar.
Java:
else if{
Das dürfte sich nicht übersetzen lassen, denn da ist dann das if ohne Bedingung.

Des Weiteren scheint es so, dass Du die for Schleife, in der Du die array Element anfügst an line1 innerhalb der anderen Schleife ist. Ebenso die Ausgabe.

Dann scheint es so, dass Du nur etwas füllst, wenn der erste Buchstabe ein A ist. Ist dies nicht der Fall, dann machst Du nichts. Damit ist in dem Array einfach nur ein erster Buchstabe und sonst nur null Werte (in einem String array sind nach der Erstellung nur null Werte. Somit scheint es, dass Du das array1 bis auf das erste Feld nicht füllst. Dadurch kommt es bei dem append dann zu "null" Werten, die angehängt werden.
 

Sim00

Mitglied
Also das ist nicht dein Code, der irgend eine Ausgabe bringt, denn der Code ist so nicht übersetzbar.
Java:
else if{
Das dürfte sich nicht übersetzen lassen, denn da ist dann das if ohne Bedingung.

Des Weiteren scheint es so, dass Du die for Schleife, in der Du die array Element anfügst an line1 innerhalb der anderen Schleife ist. Ebenso die Ausgabe.

Dann scheint es so, dass Du nur etwas füllst, wenn der erste Buchstabe ein A ist. Ist dies nicht der Fall, dann machst Du nichts. Damit ist in dem Array einfach nur ein erster Buchstabe und sonst nur null Werte (in einem String array sind nach der Erstellung nur null Werte. Somit scheint es, dass Du das array1 bis auf das erste Feld nicht füllst. Dadurch kommt es bei dem append dann zu "null" Werten, die angehängt werden.
Was ist wenn ich statt "else if" nur "else" nehme? Bzw. was kann ich machen damit der Array vollständig gefüllt wird? Ich verstehe noch nicht so ganz wo da der logische Fehler im Aufbau ist. Das mit der for Schleife die die Arrayelemente an line1 anhängt und dann ausgibt hat seine Richtigkeit und funktioniert auch wie erwartet. Das Problem scheint wirklich-wie du gesagt hast-darin zu liegen, dass nur die erste Stelle vom Array besetzt wird.
 
K

kneitzel

Gast
Vermutlich sollte dies
Java:
                else if{
                    if(array1[i-1]=="A"){

eher sowas sein:
Java:
                else if(array1[i-1]=="A"){

Oder tatsächlich sowas:
Java:
                else {
                    if(array1[i-1]=="A"){
aber das macht nur dann wirklich Sinn, wenn in dem else mehr wie nur dieses if steht. (Aber technisch geht auch ein
Java:
// ....
else {
    if (...) {
        // ...
    }
}
Das sind dann nur eben Clean Code Regeln, weil ein direktes else if () ... besser lesbar sein dürfte.
 

Sim00

Mitglied
Hab den Fehler gefunden. Statt der Abfrage
Java:
 if(array1[i-1]=="A")
muss man hier die equals-Methode benutzen:
Java:
 if(array1[i-1].equals("A"))
 
K

kneitzel

Gast
Ja, da hatte ich dann nicht mehr so genau geschaut, aber das ist richtig: Strings vergleicht man mit equals und nicht mit ==. Sehr gut!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Q If-Abfrage mit mehreren Bedingungen Java Basics - Anfänger-Themen 6
M Variablen Werte nach setzen, bei Abfrage wieder alter Wert Java Basics - Anfänger-Themen 10
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
L If Abfrage Java Basics - Anfänger-Themen 4
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
P Amazon SQS abfrage Java Basics - Anfänger-Themen 1
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
C Javafunktion zur Abfrage eines Quellcodes Java Basics - Anfänger-Themen 15
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
S If Abfrage nur mit bestimmter Initialisierung? Java Basics - Anfänger-Themen 8
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
S Backspace Abfrage funktioniert nicht Java Basics - Anfänger-Themen 4
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
N Methoden Attribut Abfrage eines anderen Objektes Java Basics - Anfänger-Themen 36
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D SQL Abfrage anpassen Java Basics - Anfänger-Themen 17
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
H if-Abfrage, ungleich und falscher true Wert? Java Basics - Anfänger-Themen 11
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
OlafHD Fehler Bei der if Abfrage Java Basics - Anfänger-Themen 5
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
D if-Abfrage Java Basics - Anfänger-Themen 12
J Abfrage für Programmwiederholung Java Basics - Anfänger-Themen 2
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
A Erste Schritte Problem bei meiner if-Abfrage! Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
T Klasse für Google-Abfrage Java Basics - Anfänger-Themen 9
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
J Abfrage versetzen Java Basics - Anfänger-Themen 2
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
thet1983 if() Abfrage Java Basics - Anfänger-Themen 2
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
H Erste Schritte If Abfrage Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
U einlesen, abfrage Java Basics - Anfänger-Themen 25
T SQL Abfrage Läuft nicht Java Basics - Anfänger-Themen 5
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
H if-Abfrage double wert Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
B Boolean abfrage Java Basics - Anfänger-Themen 3
D Variablen Rücksprung nach If Abfrage Java Basics - Anfänger-Themen 16
T If- Abfrage Java Basics - Anfänger-Themen 8
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
D if-Abfrage Java Basics - Anfänger-Themen 6
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
C If abfrage zu getBackground Java Basics - Anfänger-Themen 2
T abfrage eines Integer Array s Java Basics - Anfänger-Themen 5
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
G Adminrechte abfrage Java Basics - Anfänger-Themen 5
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
R If-Abfrage, || funktioniert nicht Java Basics - Anfänger-Themen 4
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
C Treffer Abfrage Java Basics - Anfänger-Themen 19
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben