Java Variablen Standardwerte zuweisen

Das Problem ist doch dass sich hier keiner ein wirkliches Bild vom Problem machen kann ohne dass du uns mal genau sagst was du machen sollst...

Wir wissen ja nicht mal wie der Anwender einen Wert vergeben kann, wann das passiert usw..

Wie soll man da denn überhaupt helfen können?
 
1668mib schrieb:
Das Problem ist doch dass sich hier keiner ein wirkliches Bild vom Problem machen kann ohne dass du uns mal genau sagst was du machen sollst...

Wir wissen ja nicht mal wie der Anwender einen Wert vergeben kann, wann das passiert usw..

Wie soll man da denn überhaupt helfen können?

Hy,

hab dir mal ne PM geschrieben, da das Material mehr oder weniger copyrighted ist, kann ich es net hier öffentlich posten.

Es wäre sehr nett, wenn du mir helfen kannst.
Ergänzung ()

tarsonis schrieb:
try { a = Integer.parseInt(wasauchimmer); aSet = true; b = Integer.parseInt(wasauchimmer); bSet = true; } catch (Exception e) {}

Kann doch nich so schwer sein

Hy, da liegt das Problem, das wir mit try, catch noch net gearbeitet haben und es somit net verwenden dürfen (Lehrerlogik).
 
dann wird dir hier auch keiner helfen können, wenn
a) keiner die genaue aufgabe kennt
b) keiner weiß, was man für befehle benutzen darf und welche nicht

=> selbst denken und was dabei lernen ;)
 
tarsonis, NumberFormatException anstatt Exception catchen.
"Nie"(?) nur "Exeception" catchen.

Warum? Hab ich vergessen :D :(
 
Wenn ihr mit try und catch nicht gearbeitet habt, koennt ihr auch kein parseInt verwenden um die Variablen einzulesen. Ebenso kannst du keine Variablen z.B. ausgeben, die auch nur *irgendwo* initialisiert wurden.

@Patric_ joah, hat man uns auch beigebracht. Ich catche trotzdem nur Exception, hatte bislang nie einen Unterschied gemacht. Aber ich unterscheide da auch selten zwischen Exceptions.
 
1668mib schrieb:
@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.
Den entsprechenden Unterschied hab ich einfach mal als bekannt angenommen.

Wo wir schon dabei sind:
1668mib schrieb:
Weil n kein Zeiger ist... im Gegensatz zu Objekt-Instanzen.
ist auch etwas ungenau. Man kann es schon Zeiger nennen, aber genauer ist "Objekt-Referenz". Das wurde (wahrscheinlich) deswegen so ganannt, weil sie nicht direkt auf eine Speicherstelle im Hauptspeicher zeigen, sondern auf eine Position im Objekt-Pool der Java VM.
 
sebbolein schrieb:
dann wird dir hier auch keiner helfen können, wenn
a) keiner die genaue aufgabe kennt
b) keiner weiß, was man für befehle benutzen darf und welche nicht

=> selbst denken und was dabei lernen ;)

Jo kann euch verstehen. Aber dachte auch net, dass Java so kompliziert ist und es keine einfache Methode gibt, mit der man prüfen kann, ob ne Variable bereits initialisiert ist!?
 
tarsonis schrieb:
Wenn ihr mit try und catch nicht gearbeitet habt, koennt ihr auch kein parseInt verwenden um die Variablen einzulesen. Ebenso kannst du keine Variablen z.B. ausgeben, die auch nur *irgendwo* initialisiert wurden.

Wozu brauche ich bitte für den parse Befehl ne try - catch Anweisung?
 
Also so wie ich es sehe:

Er möchte ne Klasse mit Membervariablen a und b als Beispiel (vom Typ int).
Man kann sie wohl über Konstruktoren vorbelegen.

Insofern denke ich ist die Überladung von Konstruktoren die Lösung des Problems.
 
Zuletzt bearbeitet: (Klassenvariable durch Membervariable ersetzt)
Wenn du z.B. einen String in ein Int/double/.. parsen willst und im String steht keine Zahl sondern was anderes, was gibts dann? Richtig eine Exception und die musst du fangen ;)
 
tarsonis schrieb:
Eine Variable ist initialisiert, wenn du sie initialisiert hast (ergo mit einem Wert belegt). Also ist die Variable _immer_ initialisiert, sobald du einen Wert drin hast. Schick mir mal auch die PN mit der Aufgabenstellung.

Danke für die Hilfe!!
 
public class foo {
public static void main(String[] args) {
Integer a = null,b = null;
if(a == null) a = 1;
if(b == null) b = 2;
System.out.println("a: " + a + " b: " + b);
}
}
 
@tarsonis: Eine Membervariable ist halt immer initialisiert... wie soll sie es nicht sein?

Code:
class MyClass {
  int a;
}

a ist immer initialisiert (hier mit 0), wie soll irgendwo geprüft werden, ob die 0 nun die fehlende Inialisierung oder der zugewiesene Wert ist?

@sebbolein:
Ist eine Lösung. Aber nicht für das Problem.

Edit:
Lösung also grob
Code:
class MyClass {
  private int a;

  public MyClass()
  {
    // a nicht initialisiert via Parameter also a standardwert setzen
    a = 1;
   }

  public MyClass(int wert)
  {
    a = wert;
  }
}
 
Zuletzt bearbeitet: (Klassenvariable durch Membervariable ersetzt)
1668mib schrieb:
@tarsonis: Eine Klassenvariable ist halt immer initialisiert... wie soll sie es nicht sein?

Code:
class MyClass {
  int a;
}

a ist immer initialisiert (hier mit 0), wie soll irgendwo geprüft werden, ob die 0 nun die fehlende Inialisierung oder der zugewiesene Wert ist?

@sebbolein:
Ist eine Lösun. Aber nicht für das Problem.

Edit:
Lösung also grob
Code:
class MyClass {
  private int a;

  public MyClass()
  {
    // a nicht initialisiert via Parameter also a standardwert setzen
    a = 1;
   }

  public MyClass(int wert)
  {
    a = wert;
  }
}

genau da liegt das Problem!
 
Und wie gesagt, ein bisschen mehr Input würde bei der Lösungsfindung schon helfen. Den meisten war nicht klar dass es Membervariablen/Elementvariablen (so heißen die doch, oder? Klassenvariablen wären ja statisch, aber anderes Thema ^^) sind und du eine Klasse machen sollst.
 
Wenn wir schon mit konstruktoren arbeiten, dann schlag ich das vor:

Code:
public class foo {
	//Variable initialisiert
	static int a;
	static int b;
	
	public foo(){
		//standartconstruktor
		//a und b werden auf standartwerte gesetzt
		a = 1;
		b = 2;
	}
	public foo(int a, int b){
		//parametriesierter constructor
		//a und b werden auf die übergegebenen werte gesetzt
		foo.a = a;
		foo.b = b;
	}
	public static void main(String[] args) {
		foo foo = new foo(); //standart
		System.out.println("a: " + a + " b: " + b);
		
		foo = new foo(5,7); //wertübergabe
		System.out.println("a: " + a + " b: " + b);
	}
}

Ausgabe ist dann:

a: 1 b: 2
a: 5 b: 7
 
@sebbolein: Grob richtig ja... Aber ich denke die Hilfe reicht. Wir sollen nicht seine Hausaufgaben lösen, sondern ihn auf den Weg bringen sie lösen zu können...
oder geht's dir um dein Ego um zu zeigen, dass du das lösen kannst? Weil nachdem klar war dass es über überladene Konstruktoren zu realisieren ist, hab ich die Lösung eigentlich jedem hier zugetraut außer dem Thread-Ersteller, dem hab ich dann gezeigt, wie es grob geht...

Und es sollen keine statischen Variablen sein (hab versehentlich von Klassen- statt von Member-/Elementvariablen gesprochen).
 
Zuletzt bearbeitet:
mich würde ehrlich gesagt auch die richtige lösung interessieren, so klar is mir das eigentlich nich ^^
 
Zurück
Oben