Auf eine Variable von einer anderen Klasse aus zugreifen

Vivien

Vivien

Mitglied
Hallo Liebe Community,

es tut mir leid, wenn dies eine dumme Frage ist - aber ich komme wieder einmal nicht so weiter wie ich das gerne hätte, trotz ausgiebiger Recherche.
Im Rahmen eines simplen Ratespiels, möchte ich von der Klasse Ratespiel.java - die Anzahl der Spieler auslesen, die in Spieler.java erstellt worden sind.

Ich habe zwar eine funktionierende Lösung gefunden und habe diese markiert, doch mir erscheint die Lösung "nicht wirklich schön". Meine ungeliebte Lösung habe ich hervorgehoben:

Spieler.java:
import java.util.*;

public class Spieler {

    public static int SpielerAnzahl;
    
    public static void SpielerAnlegen() {
            //Einlesen der Spielerzahl
        Scanner anzahlSpieler = new Scanner(System.in);
        System.out.println("Wie viele Spieler seid Ihr? Bitte gebt die Zahl der Mitspieler ein!");
        int anzahlSpielerAusUserInput = anzahlSpieler.nextInt(); //Schreibe userinput in variable anzahlSpielerAusUserInput
        System.out.println("Spiel mit " + anzahlSpielerAusUserInput + " Spielern(n) wird erstellt!");

        //Erstelle ArrayListe mit eingegebenen Spielern und gib jedem Spieler eine Nummer angefangen bei 1 & endend bei Spielernr. aus UserInput
        ArrayList<Integer> SpielerArray = new ArrayList<Integer>();
        for (int i=1; i<=anzahlSpielerAusUserInput; i++) {
            SpielerArray.add(i);
            SpielerAnzahl++;
        }
        
        //Ausgabe der erstellten Spieler aus der ArrayListe mit dem ListIterator (mehr zur Überprüfung, das auch alle Spieler korrekt erstellt wurden sind)
        ListIterator<Integer> li = SpielerArray.listIterator();
        
        while(li.hasNext()) {
            System.out.println("Spieler Nummer " + li.next() + " erfolgreich erstellt.");
        }
    }
    public static int getSpielerAnzahl() {
        return SpielerAnzahl;
    }
    
    
    
}

Ratespiel.java:
import java.util.*;

public class Ratespiel {
    public void starteSpiel() {
        //Spieler anlegen
        Spieler spieler = new Spieler();
        spieler.SpielerAnlegen();
        
        //Formatierung
        System.out.println();
        System.out.println("Spiel startet jetzt!");
        System.out.println();
        
        //Zufallszahl Intervall festlegen
        int max = 10;
        int min = 1;
        int range = max - min + 1;
        
        //Zufallszahl erzeugen im oben festgelegten Intervall
        int rand = 0;
        for (int i = 0; i < 10; i++) {
            rand = (int)(Math.random()*range) + min;
        }
        System.out.println("Alle " + Spieler.getSpielerAnzahl() + " Spieler suchen sich jetzt eine Zahl aus:");
        
        
    }
}

Nur der Vollständigkeit halber noch der SpielStarter:
SpielStarter.java:
public class SpielStarter {
    public static void main(String[] main) {
        Ratespiel ratespiel = new Ratespiel();
        ratespiel.starteSpiel();
    }
}

Ich hätte gerne die Lösung so umgesetzt, dass ich nicht nochmal unnötig in der for Schleife aus Zeile 18, in Spieler.java mitzählen muss.
Folgendes habe ich versucht (veränderte Zeilen hervorgehoben):

Spieler.java:
import java.util.*;

public class Spieler {

    
    public static int SpielerAnlegen() {
            //Einlesen der Spielerzahl
        Scanner anzahlSpieler = new Scanner(System.in);
        System.out.println("Wie viele Spieler seid Ihr? Bitte gebt die Zahl der Mitspieler ein!");
        int anzahlSpielerAusUserInput = anzahlSpieler.nextInt(); //Schreibe userinput in variable anzahlSpielerAusUserInput
        System.out.println("Spiel mit " + anzahlSpielerAusUserInput + " Spielern(n) wird erstellt!");

        //Erstelle ArrayListe mit eingegebenen Spielern und gib jedem Spieler eine Nummer angefangen bei 1 & endend bei Spielernr. aus UserInput
        ArrayList<Integer> SpielerArray = new ArrayList<Integer>();
        for (int i=1; i<=anzahlSpielerAusUserInput; i++) {
            SpielerArray.add(i);
        }
        
        //Ausgabe der erstellten Spieler aus der ArrayListe mit dem ListIterator (mehr zur Überprüfung, das auch alle Spieler korrekt erstellt wurden sind)
        ListIterator<Integer> li = SpielerArray.listIterator();
        
        while(li.hasNext()) {
            System.out.println("Spieler Nummer " + li.next() + " erfolgreich erstellt.");
        }
        return anzahlSpielerAusUserInput;
    }

    
    
    
}

Sprich: Ich würde gerne die Methode "SpielerAnlegen" so nutzen, dass ich anschließend als Rückgabewert die Spieleranzahl ebenfalls mit-erhalte, am besten gleich aus der eh schon vorhandenen Variable anzahlSpielerAusUserInput, um diese an beliebiger Stelle in Ratespiel.java zu nutzen.
Leider weiß ich aber nicht wie ich dann auf den Rückgabewert aus Ratespiel.java aus zugreifen soll :(

Mit folgendem Code wird SpielerAnlegen komplett durchgelaufen und nicht nur der return Wert geliefert logischerweise:
Java:
        System.out.println("Alle " + Spieler.SpielerAnlegen() + " Spieler suchen sich jetzt eine Zahl aus:");

Habe ich mich verrannt und kann man das so in der Weise gar nicht umsetzen?
Oder fehlt mir eine wichtige Grundlage um das so umsetzen zu können?

Über Hilfestellung, wie das richtig (und elegant) umzusetzen wäre, würde ich mich freuen 🤔
Vielen Dank!

Lg
 
Mart

Mart

Bekanntes Mitglied
mach erstmal alles nicht static was nicht "main" heißt dann sollten sich einige Probleme von alleine Lösen


du kannst auf die Variable nicht zu greifen weil sie Static ist dh alle Spieler greifen auf die Gleiche Variable zu wegen dem static aber das ufert dann zu dem aus dass man den code nicht mehr versteht weil static schon so ziemlich gegen die grundprinzipien von java ist...

es gibt ausnahmen wie Math.PI weil sich PI nur unwahrscheinlich in nächster Zeit verändert das hat aber auch "public static final" also unveränderbar
 
Zuletzt bearbeitet:
kneitzel

kneitzel

Top Contributor
Also in Ratespiel hast Du ja in starteSpiel eine lokale Variable spieler. Diese könntest Du zu einer Instanzvariable machen, dann hättest Du in allen Methoden von Ratespiel Zugriff auf diese Instanz.
 
Vivien

Vivien

Mitglied
Hallo,
vielen Dank für eure Antworten. Tut mir leid das ich Heute erst antworte.
Also ich bin noch einmal die static Grundlagen durchgegangen und werde darauf in Zukunft achten, dieses nur dann einzusetzen wenn ich es auch wirklich brauche. Vielen Dank @Mart .
Vielen Dank auch für @kneitzel , damit wurde mein Problem gelöst :)
Lg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
S Wie erstelle ich eine Vorbedingung für eine Variable einer Methode ? Java Basics - Anfänger-Themen 5
S Warum kann ich nicht mehr als eine Variable in einer for Schleife deklarieren ? Java Basics - Anfänger-Themen 1
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
I Variablen Wie initialisiert man in Java eine Variable ohne das Setzen von 0 oder einer anderen Zahl? Java Basics - Anfänger-Themen 8
W Klassen Kann eine Variable nicht aus einer Klasse bekommen Java Basics - Anfänger-Themen 9
D Von einer Methode auf eine lokale Variable in der Main zugreifen? Java Basics - Anfänger-Themen 15
E Variable aus einer Methode heraus in eine andere Klasse übergeben Java Basics - Anfänger-Themen 13
S Wie überprüfe ich eine Zahl (in einer Char-Variable) auf einstelligkeit? Java Basics - Anfänger-Themen 8
A Wert einer Variable an eine Methode in einer anderen Klasse. Java Basics - Anfänger-Themen 4
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
V Erste Schritte Eine Array-Variable mit Benutzereingaben befüllen Java Basics - Anfänger-Themen 3
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
R Warnung, wenn eine Variable eingegeben wird Java Basics - Anfänger-Themen 6
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
F [OOP] Auf eine Variable aus meherer Klassen zugreifen Java Basics - Anfänger-Themen 22
BadBat Variablen Eine Variable mit 2 Typen Java Basics - Anfänger-Themen 38
S Cannot find symbol (symbol ist eine Variable) Java Basics - Anfänger-Themen 13
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
P Variablen Wie kann ich eine lokale Variable in eine andere Methode einfügen? Java Basics - Anfänger-Themen 27
A Eine Variable in verschiedenen Ereignisprozeduren benutzen Java Basics - Anfänger-Themen 7
D Java erkennt eine deklarierte Variable nicht Java Basics - Anfänger-Themen 2
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
S Auf eine variable/objekt eines frames zugrifen Java Basics - Anfänger-Themen 22
B auf private Variable durch eine Methode zugreifen Java Basics - Anfänger-Themen 8
D Eine Variable in mehreren "switch" Java Basics - Anfänger-Themen 24
A Threads Eine Klasse muss auf Variable der Anderen warten. Java Basics - Anfänger-Themen 6
J Eine int Variable jede Sekunde um 1 hocnzählen Java Basics - Anfänger-Themen 3
H text feld eine variable zu weisen Java Basics - Anfänger-Themen 3
U Wert an eine Variable anhängen Java Basics - Anfänger-Themen 2
M Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben? Java Basics - Anfänger-Themen 19
H eine als public deklariete Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
N Per Java in ein HTML-Suchfeld eine Variable reinschreiben Java Basics - Anfänger-Themen 4
G zwei Objekte, eine Variable Java Basics - Anfänger-Themen 14
R Eine Variable soll den Wert von t_leer (eines JLabel)annehm Java Basics - Anfänger-Themen 3
T KeyListener, Nullpointer und eine unbekannte Variable Java Basics - Anfänger-Themen 6
G Wie ändere ich eine Variable in jedem Schleifendurchlauf? Java Basics - Anfänger-Themen 15
P wie bekomme ich ein array in eine string variable Java Basics - Anfänger-Themen 11
M Eine Variable darauf überprüfen ob sie gesetzt wurde Java Basics - Anfänger-Themen 6
G Wie erzeuge ich eine variable Menge von Variablen! Java Basics - Anfänger-Themen 2
T Von Main auf eine Variable in void zugreifen Java Basics - Anfänger-Themen 4
M Array - eine Variable auslesen Java Basics - Anfänger-Themen 4
S mit String eine Variable ansprechen Java Basics - Anfänger-Themen 5
S Daten in eine Variable in einem anderen Java File schreiben Java Basics - Anfänger-Themen 10
G Eine Variable in mehreren Klassen Java Basics - Anfänger-Themen 10
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
B eine methode erstellen Java Basics - Anfänger-Themen 7
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
A Wie schaffe ich das eine while Schleife addiert danach subtrahirt? Java Basics - Anfänger-Themen 1
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
Tino1993 for-Schleife, die eine vorgegebene Anzahl von Zeichen ausgibt Java Basics - Anfänger-Themen 3
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
P Eine komplizierte Sache Java Basics - Anfänger-Themen 1
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
T Wie eine Komposition garantieren Java Basics - Anfänger-Themen 5
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
L Muss eine HttpURLConnection geschlossen werden? Java Basics - Anfänger-Themen 2
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23

Ähnliche Java Themen


Oben