OOP Variablen aus verschiedenen Klassen

Kingkook

Aktives Mitglied
Hallo,

ich arbeite für meine Ausbildung nebenbei ein bisschen an Java und arbeite gerade an einer Art "Lottoprogramm".Zur Zeit komme ich aber an folgendem Punkt nicht weiter:

( Arbeite mit NetBeans 6.9.1 falls das wichtig ist)

Ich habe das Projekt "Lotto" zu dem das Package "lotto" gehört.In diesem gibt es 3 Klassen ( diese sind auf 3 verschiedenen Arbeitsblättern wenn man dass so nennt )

Es gibt die "Main.java", "Tippabgabe.java" und "Auswertung.java".
in der Main soll er per Methodenaufruf alles starten mehr nicht.

Java:
package lotto;

public class Main
{
    public static void main(String[] args)
    {
        lotto.Tippabgabe.tippabgabe();
        lotto.Auswertung.auswertung();    
    }
}

In der Tippabgabe steht der Quelltext zur Eingabe aller gewünschten Zahlen und die automatische Ziehung.

Java:
package lotto;
import java.util.Random;
import java.util.Scanner;

public class Tippabgabe
{
public static void tippabgabe()
    {
        int i,j,m,n;
                int zahlen[] = new int[6];
                int tipp[] = new int[6];
                Scanner eingabe = new Scanner(System.in);
                Random zufall = new Random();
                for (m=0 ;m<6 ;m++ )
                {
                    System.out.println("Bitte die " + (m+1) + ". Zahl eingeben!!");
                    tipp[m] = eingabe.nextInt();
                    if (tipp[m] >= 50 || tipp[m] <= 0)
                    {
                        do
                        {
                            System.out.println("Ihre Zahl muss zwischen 1 und 49 liegen! Bitte die " + (m+1) + ". Zahl erneut eingeben!!");
                            tipp[m] = eingabe.nextInt();
                        }while (tipp[m] >= 50 || tipp[m] <= 0);
                    }
                    for ( n = 0; n < m ; n++ )
                    {

                        if ( tipp[n] == tipp[m] )
                        {

                            System.out.println("Diese Zahl hast du schon gewählt bitte nimm eine andere!!");
                            tipp[m] = eingabe.nextInt();
                            if (tipp[m] >= 50 || tipp[m] <= 0)
                            {
                                do
                                {
                                    System.out.println("Ihre Zahl muss zwischen 1 und 49 liegen! Bitte die " + (m+1) + ". Zahl erneut eingeben!!");
                                    tipp[m] = eingabe.nextInt();
                                }while (tipp[m] >= 50 && tipp[m] <= 0);
                            }
                            n = -1;
                        }
                    }
                }
                System.out.println("Du hast auf diese Zahlen getippt:");
                for (m = 0; m < 6; m++ )
                {
                    System.out.print(" " + tipp[m]);
                }
                System.out.println("\n");

                for (i = 0; i < 6; i++ )
                {
                    zahlen[i] = zufall.nextInt(49) + 1;
                    //System.out.println("Nummer " +i +"\t Zahl "+ zahlen[i]);
                    for ( j = 0; j < i ; j++ )
                    {
                       // System.out.println("Nummer "+i+"("+zahlen[i]+")" +"\t vergleich mit Nummer" +j+"("+zahlen[j]+")");
                        if ( zahlen[j] == zahlen[i] )
                        {
                            //System.out.println("alte Zahl" + zahlen[i]);
                            zahlen[i] = zufall.nextInt(49) + 1;
                            //System.out.println("neue Zahl" + zahlen[i]);
                            j = -1;
                        }
                        else
                        {
                            //System.out.println("keine gleiche");
                        }
                    }
                }
                System.out.println("Die Zahlen lauten:");
                for (i = 0; i < 6; i++ )
                {
                    System.out.print(" " + zahlen[i]);
                }
                System.out.println("\n");
    }
}

Und in der Auswertung soll er am Ende herausfinden,wie viele richtige man hat.

Java:
package lotto;

public class Auswertung
{
    public static void auswertung()
    {
        int k,l;
        System.out.print("Die Ziehung wird jetzt ausgewertet!!\n\nDu hast folgende zahlen getippt:\n\t");
        for ( k = 0; k < 6; k++ )
        {
            System.out.print("test");

        }
    }
}

Meine Hauptfrage dabei ist eigentlich nur,wie ich in der "Auswertung.java" Variablem ( tipp[] sowie zahlen[] ) benutzen kann.

Hoffe konnte meine Frage einigermaßen formulieren.

Liebe Grüße Kooki
 
Arbeite mit konstruktoren und übergib werte an die membervariable oder gib der auswertungsmethode einfach parameter
 
Zuletzt bearbeitet von einem Moderator:
entweder du schreibst ein public vor die variablen, oder du machst setter und getter methoden

also





Java:
private int foo;
public int getFoo()
{
         return foo;
}

public void setFoo(int zahl)
{
       foo=zahl;
}

falls du es gerne hast, wenn die variablen gleich heissen, dann so

public void setFoo(int foo)
{
this.foo=foo;
}
 
Java:
public class Main
{
    public static void main(String[] args)
    {
        int[] tipp = // tipp einlesen
        int[] zahlen = lotto.Tippabgabe.tippabgabe(tipp);
        lotto.Auswertung.auswertung(zahlen);    
    }
}


public class Tippabgabe
{
    public static int[] tippabgabe(int tipp[])
                // magick
                
                return zahlen;
    }
}

public class Auswertung
{
    public static void auswertung(int zahlen[])
    {
            System.out.print(zahlen);
    }
}
 
Also ersteinmal vielen dank für die Hilfe.Habe mich für setter/getter entschieden und das klappt soweit alles ganz gut.Dafür habe ich jetzt das nächste Problem 🙁

Ich habe das Lottoprogramm jetzt um eine erste einfache GUI erweitert.Darauf ist auch eine große TextArea.
Meine Frage ist folgende:

Gibt es eine Möglichkeit, dass alle ausgaben die per System.Out ausgegeben werden per stream umgeleitet werden in die Textarea?So das sich diese "Zeile für Zeile" den Text aus der Konsole nimmt und auf der GUI ausgibt?

Habe bereits etwas rumprobiert mit

Java:
 public static PrintStream stream;
                System.setOut(stream);
                GUI.textausgabe.append(stream.toString());

diesen Zeilen verteilt im Text aber so richtig trägt das keine Früchte ;-)
 

Zurück
Oben