Mehrere Bedinungen in einer if Abfrage

  • Hallo an all!


    Ich versuche gerade meine ersten kleinen Programme zu schreiben und brauche Hilfe bei einer Bedingungsabfrage.


    Es soll ein einfacher Lotto Generator werden.


    Einfache onClickListener Struktur und ein Random:

    Code
    // Zufallszahl erzeugen
    Random Zufallszahl = new Random ();
    Zahl1 = Zufallszahl.nextInt(49)+7;
    Zahl2 = Zufallszahl.nextInt(49)+7;
    Zahl3 = Zufallszahl.nextInt(49)+7;
    Zahl4 = Zufallszahl.nextInt(49)+7;
    Zahl5 = Zufallszahl.nextInt(49)+7;
    Zahl6 = Zufallszahl.nextInt(49)+7;
    Zusatzzahl = Zufallszahl.nextInt(49)+7;
    // Abfrage, dass keien Zahl doppelt vorkommt


    Nun möchte ich vor der Ausgabe der Zahlen abfragen ob Zahlen doppet vor kommen, wollte es mit einer if Abfrage machen und das mit != lösen. Jedoch komm ich nicht weiter.


    Kann mir da wer weiter helfen?


    Danke schon mal!

  • Ich würde es in einer Array machen, dann kannst du durch die einzelnen Zahlen in einer Schleife durchgehen und dabei jede Zahl mit jeder anderen vergleichen. Am Einfachsten wäre wohl etwas ähnliches wie dieses hier:



    Java
    int[] zahlen = new int[7];
    //...zahlen reinschreiben, am besten auch direkt in einer Schleife
    //Abfrage ob gleiche vorkommen
    for(int i=0; i<=zahlen.length; i++)
    {
        for(int a=i+1; a<=zahlen.length;a++)
           if(zahlen[i]==zahlen[a])
               //zahlen[i] bzw. zahlen[a] sind gleich 
    }

    Zur Erklärung:
    Die erste Schleife geht einfach nur die Zahlen nacheinander durch. Für jede Zahl wird aber eine weitere Schleife gestartet. Diese startet nicht bei 0, sondern bei i+1, daher werden bereits verglichene Zahlen nicht noch einmal verglichen und die Zahl wird nicht mit sich selber verglichen. Sollte so stimmen ;)

  • Wäre da mein vorschlag.

  • Erst mal Danke für die Antworten, hab erst mal Pommes seine Idee genutzt:


    Leider mit nem dicken Error! Unfortunaly, Projekt wurde gestoppt.


    Fehler in der Syntax werden mir jedoch nicht angezeigt.

  • Dann würde ich mir den Logcat Bericht einmal anschauen, das ist sehr wichtig, auch wenn dieser Fehler relativ einfach ist.


    TextView.setText() nimmt verschiedene Argumente. Das einfachste ist ein String, dieser wird dann direkt angezeigt. Ansonsten geht auch ein int-Wert, welcher meistens eine Referenz auf einen String ist. Zum Beispiel "R.string.teststring". Das wäre dann aber extra in der xml Datei festgelegt.


    Integer.valueOf() gibt dir den Integer Wert des Parameters wieder. Das möchtest du aber nicht. Also am Besten einfach


    Code
    Lotto_Zahl_1.setText(""+(Zahl1));

    benutzen.

  • Ich dachte mit Integer.valueOf() wird eine ganze Zahl als String wieder gegeben. Machte ich bisher immer so. Alternativ nutze ich Float.valueOf() um eine Fließkommazahl anzuzeigen.


    Ich möchte ja eigentlich eine Zahl in einen String umwandeln, der dann angezeigt wird. Alternativ, könnte man String.valueOf nutzen?


    Ach ja, der Fehler kommt immer noch:


    Wichtig wäre das hier:


    java.lang.ArrayIndexOutOfBoundsException: length=7; index=7


    Arrays hab ich nie vorher genutzt, ist Neuland für mich.^^

  • OK, jetzt klappts anscheinend, gibt nur noch nen Anzeigefehler.


    Noch mal kurz zur Nachfrage:


    Zitat

    Ich dachte mit Integer.valueOf() wird eine ganze Zahl als String wieder gegeben. Machte ich bisher immer so. Alternativ nutze ich
    Float.valueOf() um eine Fließkommazahl anzuzeigen.



    Ich möchte ja eigentlich eine Zahl in einen String umwandeln, der dann
    angezeigt wird. Alternativ, könnte man String.valueOf nutzen?


    Wäre dies richtig?


    Edit:


    Könntest du mir noch was erklären.


    Was ist der Unterschied von Integer.valueOf() und String.valueOf().


    Durch Integer in der Anzeige bekam ich gerade nen Error, nutze ich String funktioniert alles. Ist das nicht beides das selbe, wo ist da der Unterschied und wann nutze ich welches von beiden? Wäre nett, wenn du mir da noch mal weiterhelfen könntest.


    Edit 2:


    Aus irgend nem Grund kommen ab und an doch noch doppelte Zahlen vor. *grübel*
    Bisschen viel vorgenommen, dachte wäre einfacher, mit Arrays hab ich mich noch nie beschäftigt. Alles schwere Kost.^^

  • Integer.valueOf gibt dir einen Integer wieder und String.valueOf gibt dir einen String wieder. Integer sind nur Zahlen, String sind Zahlen und Buchstaben und co. Da du hier Text anzeigen möchtest, ist String.valueOf nötig, oder eben " "" + zahlen1".


    Das liegt daran, dass du ja noch nichts machst, wenn die Zahl doppelt ist. Es wird überprüft, dafür ist die if-Abfrage drinne. Aber nichts darauf hin dagegen getan. Ich denke eine neue Zahl für die doppelte zu wählen ist am sinnvollsten. Ich würde das ganze aber, ähnlich wie Champs noch in extra Methoden auslagern. Dann kannst du das überprüfen danach direkt noch mal machen, ohne dafür doppelten Code zu haben.

  • Verstehe, vielen Dank für die ganzen Antworten. War wohl doch etwas aufwendiger als gedacht, dass kleine Lotto Spiel.^^


    Edit:


    Also um es nicht falsch zu verstehen, zum Anzeigen lassen benutz ich immer String.valueOf, egal ob es ein Double, Integer oder Float ist? Wann nutze ich dann eigentlich noch Integer.valueOf?

  • Zitat

    Also um es nicht falsch zu verstehen, zum Anzeigen lassen benutz ich immer String.valueOf, egal ob es ein Double, Integer oder Float ist?

    Im Prinzip schon, ja.


    Wenn du einen String hat, der eine Zahl repräsentierst und du damit wieder rechnen möchtest, dann brauchst du einen Integer. Und dafür könntest du dann schreiben:


    Java
    String meine_zahl_als_string = "33";
    int meine_zahl_als_int = Integer.valueOf(meine_zahl_als_string);

    Allerdings gibt es noch einen Unterschied zwischen "Integer" und "int". Das würde jetzt aber den Rahmen sprengen. In den meisten Fällen würdest du vermutlich Integer.parseInt(String) benutzen ;)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!