bedingungsbefehl

Status
Nicht offen für weitere Antworten.

Azrael89

Mitglied
gibt es einen befehl, der eine variable auf bedingungen überprüft und eine aktion startet wenn nur eine oder auch mehrere bedingungen zutreffen?

zum beispiel werden 3 zufallzahlen(a, b, c) erzeugt, bei der zweiten muss man ja nur eine for-schleife mit einer bedingung machen( for(b==a)) aber bei der zweiten bräuchte man eine bedingung wie for(c==a; c==b) die die variable aber auch ändert wenn nur eine der 2 bedingungen richtig ist.
 

madboy

Top Contributor
Was du suchst ist das logische Oder.

Code:
int a = 0;
int b = 1;
int c = 0;

while(a == b || a == c) {
    //wird so lange ausgeführt, wie a == b ODER a == c
    // also in diesem Beispiel is das hier ne Endlosschleife ;-)
}

edit: das logische Und (falls das Oder doch nicht das war, was du suchst):

Code:
int a = 0;
int b = 1;
int c = 0;

while(a == b && a == c) {
    //wird so lange ausgeführt, wie a == b UND a == c
    // also in diesem Beispiel wird das hier nie ausgeführt
}
 

Azrael89

Mitglied
gut ich habs so gemacht aber jetzt hagelt es fehler und zwar eigentlich nur zwei aber dafür 5mal. das ist mein quellcode:

Code:
import java.util.Random;
import java.awt.*;
import java.awt.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 29.09.2007
  * @author
  */

public class lottozahlengenerator extends Frame {
  // Anfang Variablen
  private Button button1 = new Button();
  private TextField zahl1 = new TextField();
  private TextField zahl2 = new TextField();
  private TextField zahl3 = new TextField();
  private TextField zahl4 = new TextField();
  private TextField zahl5 = new TextField();
  private TextField zahl6 = new TextField();
  // Ende Variablen

  public lottozahlengenerator(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    button1.setBounds(32, 16, 225, 57);
    button1.setLabel("Generiere Zahlen!");
    cp.add(button1);
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1ActionPerformed(evt);
      }
    });

    zahl1.setBounds(8, 104, 33, 24);
    zahl1.setText("");
    cp.add(zahl1);
    zahl2.setBounds(56, 104, 33, 24);
    zahl2.setText("");
    cp.add(zahl2);
    zahl3.setBounds(104, 104, 33, 24);
    zahl3.setText("");
    cp.add(zahl3);
    zahl4.setBounds(152, 104, 33, 24);
    zahl4.setText("");
    cp.add(zahl4);
    zahl5.setBounds(200, 104, 33, 24);
    zahl5.setText("");
    cp.add(zahl5);
    zahl6.setBounds(248, 104, 33, 24);
    zahl6.setText("");
    cp.add(zahl6);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void button1ActionPerformed(ActionEvent evt) {
   int a;
   int b;
   int c;
   int d;
   int e;
   int f;
   
   Random zufall = new Random();
   
   a = zufall.nextInt(50)+1;
   zahl1.setText(a);
   
   b = zufall.nextInt(50)+1;
   for(b==a){
    b = zufall.nextInt(50)+1;
   }zahl2.setText(b);
   
   c = zufall.nextInt(50)+1;
   for(c==a || c==b) {
    c = zufall.nextInt(50)+1;
   }zahl3.setText(c);
   
   d = zufall.nextInt(50)+1;
   for(d==a || d==b ||d==c) {
    d = zufall.nextInt(50)+1;
   }zahl4.setText(d);
   
   e = zufall.nextInt(50)+1;
   for(e==a || e==b || e==c || e==d) {
    e = zufall.nextInt(50)+1;
   }zahl5.setText(e);
   
   f = zufall.nextInt(50)+1;
   for(f==a || f==b || f==c || f==d || f==e) {
    f = zufall.nextInt(50)+1;
   }zahl6.setText(f);
   
   
  }

  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new lottozahlengenerator("lottozahlengenerator");
  }
}

und das sind die fehler:

Code:
Compiliere D:\Dateien\javaprogramme\zufall\lotto\lottozahlengenerator.java mit Java-Compiler
lottozahlengenerator.java:89:9: not a statement
   for(b==a;){
        ^
lottozahlengenerator.java:89:13: illegal start of expression
   for(b==a;){
            ^
lottozahlengenerator.java:94:17: not a statement
   for(c==a || c==b) {
                ^
lottozahlengenerator.java:94:20: ';' expected
   for(c==a || c==b) {
                   ^
lottozahlengenerator.java:99:24: not a statement
   for(d==a || d==b ||d==c) {
                       ^
lottozahlengenerator.java:99:27: ';' expected
   for(d==a || d==b ||d==c) {
                          ^
lottozahlengenerator.java:104:33: not a statement
   for(e==a || e==b || e==c || e==d) {
                                ^
lottozahlengenerator.java:104:36: ';' expected
   for(e==a || e==b || e==c || e==d) {
                                   ^
lottozahlengenerator.java:109:41: not a statement
   for(f==a || f==b || f==c || f==d || f==e) {
                                        ^
lottozahlengenerator.java:109:44: ';' expected
   for(f==a || f==b || f==c || f==d || f==e) {
                                           ^
10 errors
 

Azrael89

Mitglied
ja ok ich hab die for-schleifen durch if-schleifen ersetzt,doch nun hab ich noch nen fehler:

Code:
Compiliere D:\Dateien\javaprogramme\zufall\lotto\lottozahlengenerator.java mit Java-Compiler
lottozahlengenerator.java:86:9: cannot find symbol
symbol  : method setText(int)
location: class java.awt.TextField
   zahl1.setText(a);
        ^
lottozahlengenerator.java:91:15: cannot find symbol
symbol  : method setText(int)
location: class java.awt.TextField
   }else zahl2.setText(b);
              ^
lottozahlengenerator.java:96:15: cannot find symbol
symbol  : method setText(int)
location: class java.awt.TextField
   }else zahl3.setText(c);
              ^
lottozahlengenerator.java:101:15: cannot find symbol
symbol  : method setText(int)
location: class java.awt.TextField
   }else zahl4.setText(d);
              ^
lottozahlengenerator.java:106:15: cannot find symbol
symbol  : method setText(int)
location: class java.awt.TextField
   }else zahl5.setText(e);
              ^
lottozahlengenerator.java:111:10: cannot find symbol
symbol  : method setText(int)
location: class java.awt.TextField
   }zahl6.setText(f);
         ^
6 errors

aber ich hab überall die textfields 1-6 in zahl1-6 umbenannt
 

madboy

Top Contributor
Hier ein kleiner Hinweis zu den Basics (ich hab grad Lust, was zu schreiben :wink: )

Code:
int a =0;
int b = 0;
if( a == b) {
  //wird genau 0 Mal oder 1 Mal ausgeführt, je nachdem ob a wirklich gleich b ist. Das willst du in deinem Code nicht.
} else {
  //wird genau dann ausgeführt, wenn vorheriges nicht ausgeführt wurde.
}

//folgende zwei Konstrukte tun das Selbe:
for(;a==b;) {//...} 
while(a == b) {//...}

JTextField erwartet einen String als Argument und keinen int.
Lösung:
Code:
int d = 0;
//...
zahl1.setText(String.valueOf(d));
//...
 

Azrael89

Mitglied
ok ich habs endlich gecheckt, dass man das mit ner while-schleife macht und danke für den tipp bei der ausgabe.
 

Jango

Gesperrter Benutzer
Azrael89 hat gesagt.:
ok ich habs endlich gecheckt, dass man das mit ner while-schleife macht und danke für den tipp bei der ausgabe.
Wieso denn das? if war doch schon richtig... Nur ists keine Schleife...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben