Auf eine Variable von einer anderen Klasse aus zugreifen

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:

[CODE lang="java" title="Spieler.java" highlight="5,18,28,29,30"]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;
}



}[/CODE]

[CODE lang="java" title="Ratespiel.java" highlight="24"]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:");


}
}[/CODE]

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

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):

[CODE lang="java" title="Spieler.java" highlight="6,25"]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;
}




}[/CODE]

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
 
M

Mart

Gast
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 von einem Moderator:
K

kneitzel

Gast
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

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
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
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
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
M mit Maven eine ausführbare Jar bauen Java Basics - Anfänger-Themen 7
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
S Eine Idee umsetzen ganz schnell!? Java Basics - Anfänger-Themen 68
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben