Java Variablen Standardwerte zuweisen

king0r

Lt. Junior Grade
Registriert
Juli 2009
Beiträge
485
Hallo,

habe da mal ne Anfängerfrage: Wie kann ich überprüfen, ob einer Variablen bereits ein Wert übergeben wurde?

Also die Anforderung lautet: Wenn zwei Variablen a und b nicht schon initialisiert sind (muss also erst überprüft werden), sollen die Standardwerte 1 und 2 hergenommen werden. Nur wie setze ich das in java um?

Besten Dank.

Gruß
 
Puh, schon lang kein Java mehr programmiert, aber evtl so:

if (a == null) {
a = standardwer1;
}

Aber wart lieber mal auf andere Kommentare ;)
 
tarsonis schrieb:
if(a!=null) a = 1;
if(b!=null) b = 2;

Auch wenn das ne komische Initialisierung ist. Warum setzt du sie nicht von Anfang an auf 1 und 2?

Hy, du meinst wohl
if(a==null) a = 1;
if(b==null) b = 2;
 
Hy,

das frage ich mich auch. Ist aber leider ne Anforderung von ner Aufgabe :(

Hm, das kommt vom Compiler zurück:
incomparable types: int and <nulltype>
if (n == null){

also kann nen Datentyp int nicht auf null überprüft werden?
 
Weil n kein Zeiger ist... im Gegensatz zu Objekt-Instanzen.
Der Speicher für n ist belegt, aber was drin steht ist halt nicht sicher (normal steht aber 0 drin als Zahl, ich glaube bei Java werden Datentypen mit 0 initialisiert falls nicht anders angegeben).
 
hm OK,

aber wie kann ich das nun geschickt prüfen? Also ob dasteht int a; und int b; ohne Wertzuweisung (Initialisierung der Variablen) oder bereits int a = 2, b =3.
 
king0r schrieb:
Hallo,

habe da mal ne Anfängerfrage: Wie kann ich überprüfen, ob einer Variablen bereits ein Wert übergeben wurde?

Also die Anforderung lautet: Wenn zwei Variablen a und b nicht schon initialisiert sind (muss also erst überprüft werden), sollen die Standardwerte 1 und 2 hergenommen werden. Nur wie setze ich das in java um?

Besten Dank.

Gruß

Zunächst mal kommt mir da eine Frage: Welchen Typ haben a und b? Wenn da primitive Datentypen (int, float, char, ...) verwendet werden, kannst du nicht mit if (a == null) oder ähnlichem prüfen.

Vor einer Benutzung müssen Variablen einen Wert oder null zugewiesen bekommen.

Dabei kommt noch folgendes dazu:
Wenn es lokale Variablen sind, dann musst du die Wertzuweisung manuell vornehmen, bevor du sie irgendwo benutzt. Ansonsten sollte der Code nicht compilieren, der Compiler gibt die Fehlermeldung "local variable may not be initialized".
Bei statischen Variablen und Variablen in Objekten wird automatisch null, 0, false, o.ä. initialisiert.

Das bedeutet für dich: Wenn a und b z.B. int sind, dann weist du definitiv, dass sie einen Wert haben müssen, da sonst das Programm nicht compiliert.
Für Objektreferenzen kannst du, wie bereits vorgeschlagen, auf null prüfen.
 
Das kannst du nicht prüfen...
Es gibt Workarounds, welche aber alle nicht wirklich sinnvoll sind...
Z.B. könntest du dir damit helfen, die Datentypen in Hilfsklassen zu verpacken... aber das ist nicht wirklich zu empfehlen...
Oder zu jeder Variable noch eine Boolean-Variable die angibt, ob "initialisiert" wurde (die Formulierung ist natürlich quatsch, wie gesagt gibt es keine uninitialisierten ints).

Die Frage ist: Weiso brauchst du das genau?
Wer hat die Anforderung aus welchem Grund gemacht?

@Cobinja:
Vor einer Benutzung müssen Variablen einen Wert oder null zugewiesen bekommen.
Der Satz is aber sehr schwammig...

Es handelt sich logischerweise um int-Variablen (oder ähnliche), wie soll man sonst 1 oder 2 zuweisen? Und auch mal die Foren-Regeln zum Thema Zitieren beachten...
 
Zuletzt bearbeitet:
int kann nie null sein, weil int ein primitiver Datentyp ist. Wenn Du für Zahlen den Wert null abbilden willst/musst, dann nimm hierfür die Wrapperklasse, im Falle von int dann Integer.

Integer a;
if ( a == null) {
a = new Integer(0);
}

Wenn Du primitive Datentypen wie int deklarierst, weist Du ihnen besser gleich bei der Deklaration einen Wert zu, also z.B.

int a = 0;
 
Das ist ne Aufgabe aus der Schule.
Die Anforderung lautet nur, dass wenn keine Initialwerte für a und b angegeben sind (also händisch initialisiert wurde), standardmäßig a mit 0 und b mit 1 initialisiert werden sollen.
 
KeepXtreme schrieb:
schau da mal utner DefaultValues: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html

dann einfach if (a==0) { a=1; }
oder halt entsprechend den anderen typen...

Hy,

das mit a == 0 und b == 0 ist ja ne nette Idee, nur was ist, wenn man das bereits händisch so initialisiert hat und es so vom Anwender gewünscht ist? Dann muss man ja dem programm irgendwie mitteilen, ob bereits ne Initialisierung durch den user statt gefunden hat.
 
wie initialierst du denn normal a und b?
Also wie gibt es der User ein?
Ist das ganze in einer Klasse verpackt mit einer public-Methode?
Falls ja, halt einfach noch ein boolean dazu, true setzen sobald die Werte eingegeben wurden
 
dann machst du dir ne boolean variable (boolean aSet = false).
wenn der User was eingegeben hat, setzt du die halt auf true.
und dann fragte später einfach:

if(!aSet) a = 1;
if(!bSet) b = 2;
 
Patric_ schrieb:
wie initialierst du denn normal a und b?
Also wie gibt es der User ein?
Ist das ganze in einer Klasse verpackt mit einer public-Methode?
Falls ja, halt einfach noch ein boolean dazu, true setzen sobald die Werte eingegeben wurden

Hy,

also so wie ich das verstanden habe (wir verwenden ja bereits auch Int.parseInt(args)) soll man das in diesem Programm händisch in der .java Datei eintragen (sehr geschickt :rolleyes:).

Die Überprüfung würde ich gerne i ne Methode packen.

Dann gleich noch ne andere Frage zu Methoden: Wenn ich innerhalb ner Methode ne if Anweisung habe und dann ner Variable (z.B. a) einen neuen Wert zuweisen will, brauche ich ja public static int .. (int a, int b) Methode, oder?
 
@Cobinja:
Naja der Satz hört sich so an als könnte ich
int i = null;
schreiben.. schließlich ist es eine Variable und ich hab ja keinen Wert genommen.

@king0r: Wenn du schon nen Hausaufgaben-Forum willst, dann stell bitte den ganzen Teil der Aufgabe zur Verfügung zumindest den entscheidenen Teil im originalen Wortlaut. Gerade Anfänger neigen dazu Aufgaben so zu interpretieren, wie sie es wollen...
 
sebbolein schrieb:
dann machst du dir ne boolean variable (boolean aSet = false).
wenn der User was eingegeben hat, setzt du die halt auf true.
und dann fragte später einfach:

if(!aSet) a = 1;
if(!bSet) b = 2;

Das mit boolean ist mir schon klar, nur wie frage ich effektiv ab, ob die Variable initialisiert ist? Das doofe ist ja, dass 2mal die 0 vom Anwender vergeben werden kann und ich somit nicht einfach if (a != 0 && b != 0) { setA == true machen kann.
 
Zurück
Oben