Variablen Scanner als Klassenvariable

Janomikado

Mitglied
Hallo, ich bin leider etwas verwirrt, da ich nicht weiß, wie ich einen Scanner als Klassenvariable deklariere.
import java.util.*: steht dann bei mir ganz vorn und der Rest des Codes soll jetzt ausgeblendet werden.
Meine erste Überlegung war jetzt:

static Scanner sc = new Scanner (System.in) ;

Geht das wirklich so einfach oder mache ich da einen Fehler.
 
Das ist soweit richtig. Das muss natürlich noch an der richtigen Stelle stehen - halt direkt innerhalb der Klasse.

Und noch als Hinweis: Das ist nicht nur eine Deklaration einer Klassenvariable sondern zusätzlich noch eine Initialisierung.
 
Das ist soweit richtig. Das muss natürlich noch an der richtigen Stelle stehen - halt direkt innerhalb der Klasse.

Und noch als Hinweis: Das ist nicht nur eine Deklaration einer Klassenvariable sondern zusätzlich noch eine Initialisierung.
Stimmt, Klassenvariablen werden ja automatisch initialisiert. Welchen Wert nimmt der Scanner dann aber an? Er hat ja keinen bestimmten Datentyp
 
Stimmt, Klassenvariablen werden ja automatisch initialisiert. Welchen Wert nimmt der Scanner dann aber an? Er hat ja keinen bestimmten Datentyp
??
Der Datentyp der Variablendeklaration Scanner scanner; ist Scanner (bzw. vollqualifiziert java.util.Scanner).
Und java.util.Scanner ist ein Referenztyp (wie jeder andere Typ, der eine Klasse, Enum oder Interface ist).
Und der "default"-Wert jeder Instanzvariable oder Klassenvariable mit Referenztyp ist null.
 
Mir ging es bei dem Hinweis nur um die 100% korrekte Formulierung. Du hattest in dem Text halt geschrieben: "wie ich einen Scanner als Klassenvariable deklariere."

Der Code umfasst aber die Deklaration und das initialisieren.

Das ist so aber vo Vorgehen her in Ordnung und richtig! Das war also nur ein kleiner Hinweis ohne Aufforderung, irgend etwas zu verändern.

Eine Initialisierung ist ansonsten immer mit dem, was ich gerne als "Nullwert" bezeichne. Das ist für jeden Typ unterschiedlich aber entspricht sozusagen dem Wert Null:
int, long -> 0 (bzw. 0L)
double, float -> 0.0 (bzw. 0.0f)
boolean -> false
Referenzen -> null

Du willst aber natürlich eine Scanner Instanz und zwar zum Einlesen von Eingaben vom User (das unterstelle ich einfach mal) und daher ist dein Code so korrekt;
[I]static Scanner sc = new Scanner (System.in) ;[/I]

Anpassungen sind zwar denkbar, aber da ich Dich nicht verwirren will, erwähne ich diese jetzt erst garnicht.
 
??
Der Datentyp der Variablendeklaration Scanner scanner; ist Scanner (bzw. vollqualifiziert java.util.Scanner).
Und java.util.Scanner ist ein Referenztyp (wie jeder andere Typ, der eine Klasse, Enum oder Interface ist).
Und der "default"-Wert jeder Instanzvariable oder Klassenvariable mit Referenztyp ist null.
Tut mir leid für die späte Antwort, ich bin zurzeit in einer Klausrenphase. Aber vielen Dank für die Erklärung, die hilft mir gerade definitiv weiter.
 

Zurück
Oben