Tipp: Wenn du nicht von selbst drauf kommst, den Compiler anwerfen (javac Variable.java).
Im Café bist du mit deiner Frage übrigens völlig falsch und Standard schreibt sich glaub ich so.Code:Variable.java:26: cannot find symbol symbol : variable _variable location: class Variable _variable = Keyboard.readDouble(); ^ Variable.java:26: cannot find symbol symbol : variable Keyboard location: class Variable _variable = Keyboard.readDouble(); ^ 2 errors
Ergebnis 1 bis 10 von 13
- 14.12.2011, 17:57 #1Jonagold
Themenstarter
- Registriert
- 07.2010
- Beiträge
- 19
Hilfe bei Java Problem
Hallo, ich habe am Freitag ein Test in Java-Programmierung. Jetzt habe ich folgendes Problem:
public class Variable {
private double variable;
//Standardkonstruktor
public Variable(){
variable = 0.0;
}
//Übergabekonstruktor
public Variable(double _variable){
variable = _variable;
}
//set & get Methoden
public void setVariable(double _variable){
variable = _variable;
}
public double getVariable(){
return variable;
}
//zum Arbeiten mit den Methoden:
public void einlesen(){
System.out.println("Bitte Variable eingeben:");
_variable = Keyboard.readDouble();
}
public void ausgeben(){
System.out.println("Der Wert ist: "+variable);
}
}
Kann mir jemand helfen? Warum funktioniert das ganze nicht? Ich weiß dass ich nochmal eine Main-Klasse erstellen muss, aber der Fehler liegt im oben geschriebenen.
Geändert von hartloni (14.12.2011 um 19:24 Uhr)
- 14.12.2011, 18:17 #2It's more fun to be a pirate than to join the navy.RTF Apfeltalk Wiki
- 14.12.2011, 18:29 #3Jonagold
Themenstarter
- Registriert
- 07.2010
- Beiträge
- 19
Naja ich dachte hier wäre der Offtopic-Bereich. Standard wird vermerkt.

Der Compiler sagt dass er die _variable nicht kennt, aber wenn ich sie vorher deklariere dann gibt er immer nur 0.0 aus, egal was ich eingebe. In unserem Beispiel in der Uni wird die _variable bei einlesen()... auch nicht deklariert. Die Keyboard.java ist zum Benutzen der Tastatur.
- 14.12.2011, 18:51 #4
Ich denke, dass der Fehler in der einlesen Methode zu finden ist (ich gehe mal davon aus, dass du die "Keyboard"-Class in deinem Projektordner hast)...
Du versuchst quasi deine Hilfsvariable aus den anderen Methoden durch eine Keyboard-Eingabe mit einem Wert zu belegen. Es kann aber nur funktionieren (es ergibt auch nur so einen Sinn), wenn du das Attribut der Klasse veränderst.
Ganz sauber sähe deine Klasse also so aus (ohne Compilerfehler und RTE):
Code:public class Variable { //Attribute: private double variable; //Standartkonstruktor public Variable(){ variable = 0.0; } //Übergabekonstruktor public Variable(double _variable){ this.variable = _variable; } //set & get Methoden public void setVariable(double _variable){ this.variable = _variable; } public double getVariable(){ return this.variable; } //zum Arbeiten mit den Methoden: public void einlesen(){ System.out.println("Bitte Variable eingeben:"); this.variable = Keyboard.readDouble(); } public void ausgeben(){ System.out.println("Der Wert ist: "+variable); } }"Das sind keine Nazis Donny, das sind Nihilisten!"
- 14.12.2011, 19:12 #5Jonagold
Themenstarter
- Registriert
- 07.2010
- Beiträge
- 19
Ah jetzt funktioniert es, vielen Dank. Aber gibt der jetzt nicht einfach den Wert den ich in einlesen eingebe, direkt wieder aus? Also im Prinzip ohne die Konstruktoren?!
- 14.12.2011, 19:26 #6
Den Konstruktor brauchst du ja nur, um beispielsweise in einer main-Methode ein neues Objekt vom Typ "Variable" zu erzeugen. Java geht die Programme nur innerhalb der Methoden chronologisch (also von oben nach unten) durch... das heißt ohne Aufruf von "ausgeben" gibst du auch nichts direkt wieder aus.
Ich wüsste kein Szenario in dem ein solcher Umweg erforderlich wäre."Das sind keine Nazis Donny, das sind Nihilisten!"
- 22.12.2011, 21:07 #7
- 22.12.2011, 23:44 #8inaktiv
- Registriert
- 07.2009
- Beiträge
- 1.421
- 19.01.2012, 23:58 #9Boskoop
- Registriert
- 10.2011
- Ort
- Oslo
- Beiträge
- 37
Die Konstruktoren werden verwendet.
Gehen wir mal von folgender main-methode aus:
public static void main(String[] args){
Variable var = new Variable(); //Standardkonstruktor wird verwendet
System.out.println(var.ausgeben()); //Ausgabe = 0.0 weil der Standardkonstruktor benutzt wird
Variable var2 = new Variable(7.5); //Übergabekonstruktor wird verwendet
System.out.println(var2.ausgeben()); //Ausgabe = 7.5 weil der Übergabekonstruktor genutzt wird
var.einlesen(); // Wert angabe = 8.0 z.B.
System.out.println(var.ausgeben()); //Ausgabe = 8.0 weil die Variable von Dir verändert wurde
Variable var3 = var2; //fieser trick var3 zeigt auf var2 (also zeigen beide auf dieselbe Speicheradresse)
System.out.println(var3.ausgeben); //Ausgabe = 7.5 weil var3 auf dieselbe Speicheradresse zeigt wie var2
//noch schlimmer:
var3.setVariable(15.7);
System.out.println(var2.ausgeben); //Ausgabe = 15.7 ja var 3 zeigt auf dieselbe Speicheradresse wie var2 und wenn der Wert an der Speicheradr. von var3 verändert wird, dann auch der von der Speicheradr von var2
}
- 20.01.2012, 21:40 #10


Zitieren


(für eure Dummheit!)
