[gelöst] Einfache Aufgabe, läuft aber nicht.

Status
Nicht offen für weitere Antworten.

Localhope

Mitglied
Hallo, ich habe folgenden Problem. Ich habe gerade ein wenig geübt, eine Aufgabe gemacht, aber sie läuft nicht. Wenn ich die Aufgabe aber vergleiche mit den anderen die Ich bis jetzt gemacht habe (und den Quelltext ausgedruckt habe), finde ich den Fehler trotzdem nicht.

Code:
Code:
public class Heizung {

//Aufgabe a)
	private float temperatur;
	
//Aufgabe b)
public Heizung(){
	temperatur=15f;
}

//Aufgabe c
public float temperaturanzeige(){
	return temperatur;
}

//Aufgabe d)
public void waermer(float temperatur){
	temperatur=temperatur+5;
}

//Aufgabe e
public void kuehler(float temperatur){
	temperatur=temperatur-45;
}

//Aufgabe f
public void getTemperatur(float temperatur){
	System.out.println("Die Temperatur beträgt " + temperatur + "Grad.");
}

public static void main(String[] args) {
	Heizung heizung1=new Heizung();
	heizung1.temperaturanzeige();
	heizung1.waermer(temperatur);
	heizung1.kuehler(temperatur);
	heizung1.getTemperatur(temperatur);
}
}

Ich glaube die Aufgaben-Stellung ist ersichtlich.
  • temperaturanzeige soll den Wert auf der Konsole ausgeben. Da ich aber nicht wusste, wofür dann das getTemperatur sein soll, habe ich einfach einen Rückgabewert draus gemacht.
  • waermer soll die Temperatur bei jedem Aufruf um einen vom Anwender bestimmten Wert erhöhen.
  • kuehler das gleiche (nur senken).
  • Tja, und getTemperatur(), da hab ich keine Ahnung was die macht. In der Aufgabe steht nur: Definieren Sie eine Methode getTemperatur. Das wars.

Das ganze soll mit einer Main-Methode getestet werden (feste Werte, nichts mit Tastatureingabe).

Eclipse hat mir vorgeschlagen, private static float temperatur zu wählen (also static), aber es hat trotzdem nicht funktioniert. Tut es dann ja glaube ich auch nicht, da die Temperatur immer konstant auf 15° bleibt, oder?
 
S

SlaterB

Gast
> Ich habe gerade ein wenig geübt, eine Aufgabe gemacht, aber sie läuft nicht.

Fehler beschreiben?

-------

hast du c und f verwechselt?

das System.out.println sollte in die temperaturanzeige();
die Rückgabe der Temparatur passt viel eher in getTemperatur()

---------
private float temperatur;

public void waermer(float temperatur){
temperatur=temperatur+5;
}

was soll so ein Code machen?
du hast eine Exemplarvariable und einen Parameter gleichen Namens,
da ist die Codezeile doch total mehrdeutig,
wird dem Parameter oder der Exemplarvariable etwas zugewiesen?
ist das, was zugewiesen wird, der Parameter oder die Exemplarvariable?

->
arbeite mit unterschiedlichen Namen oder this.
 

Localhope

Mitglied
Hallo.

Fehler:
Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Cannot make a static reference to the non-static field temperatur
	Cannot make a static reference to the non-static field temperatur
	Cannot make a static reference to the non-static field temperatur

	at Heizung.main(Heizung.java:35)

hast du c und f verwechselt?
Was meinst du mit c und f? f=float? Aber was meinst du dann mit c? Den Begriff kenne ich nicht.

die Rückgabe der Temparatur passt viel eher in getTemperatur()
Warum? Hat das einen Grund?

private float temperatur;

public void waermer(float temperatur){
temperatur=temperatur+5;
}

was soll so ein Code machen?

Die Temperatur um + erhöhen und anschließend wieder zurück in temperatur schreiben.

Diesen Begriff habe ich im Unterricht auch noch nie gehört. Was ist damit gemeint?

Also klappt das nicht so, dass der temperaturwert um + erhöht wird, und dann wieder zurückgeschrieben wird?
 

razor

Mitglied
Hallo,

Lernen,lernen und lernen.


Code:
public class Heizung {

//Aufgabe a)
   private float temperatur;
   
//Aufgabe b)
public Heizung(){
   temperatur=15f;
}

//Aufgabe c
public void temperaturanzeige(){
   System.out.println("Die Temperatur beträgt " + temperatur + "Grad.");
}

//Aufgabe d)
public void waermer(float plustemperatur){
   temperatur=temperatur+plustemperatur;
}

//Aufgabe e
public void kuehler(float minustemperatur){
   temperatur=temperatur-minustemperatur;
}

//Aufgabe f
public float getTemperatur(){
   return temperatur;
}

public static void main(String[] args) {
   Heizung heizung1=new Heizung();
   heizung1.temperaturanzeige();
   heizung1.waermer(30f);             // hier müssen werte hin
   heizung1.temperaturanzeige();
   heizung1.kuehler(17f);               // und hier
   heizung1.temperaturanzeige();
   System.out.println(heizung1.getTemperatur());
}
}

Editiert.
 

Localhope

Mitglied
Ja, ich bin dabei zu lernen. Nur komme ich mit dem Problem nicht weiter. Das ich lernen muss um die Sprache richtig zu lernen ist schon klar. Dumm nur, wenn man Stunden an einem Fehler hängt.

Danke für dein Posting.

Code:
heizung1.waermer(15f);             // hier müssen werte hin
   heizung1.kuehler(15f);

Sind das die Werte, um die erhöht bzw. gesenkt wird? Oder ist das nur die Temperatur, welche man festgelegt hat (schon im Konstruktor). Kann ich, wenn ich die Temperatur um 6 senken will, schreiben:

Code:
   heizung1.kuehler(6f);

Mir ist noch immer nicht ganz klar, was in der main bei den Methoden in die Klammer muss. Ich dachte immer die Variable, die in der Methode verwendet wird, als (temperatur). Als Wort. So habe ich mir das gemerkt. Wie lautet die Definition richtig? Damit ich es mir neu merken kann?

Btw: Wofür ist das getTemperatur gut? Es macht rein gar nichts in der Ausgabe. Auch nicht, wenn ich 99f oder 55f hinschreibe. Warum soll es eingefügt werden?
 
S

SlaterB

Gast
Aufgabe c) und Aufgabe f) ;)

> Warum? Hat das einen Grund?

weil die die Operation getTemperatur() heißt, da erwarte ich, dass man die Temparatur gettet/ kriegt/ zurückgeliefert bekommt,

bei einer Operation temperaturanzeige() erwate ich nichts zurückzubekommen, sondern eine Ausgabe mit System.out.println,

naja, so genau erwarte ich das nicht,
aber wenn ich mir diese beiden Funktionalitäten (Ausgabe und Rückgabe) und diese beiden Operationsnamen anschauen, dann hast du die ganz offensichtlich vertauscht

---------


private float temperatur;

ist eine Exemplarvariable, ein Teil des Objektes/ des Exemplars
-------

> Also klappt das nicht so, dass der temperaturwert um + erhöht wird, und dann wieder zurückgeschrieben wird?

hast du denn nicht gelesen, was ich geschrieben habe?

du schreibst
x = x;
und erwartest, dass Java da einmal das x als Parameter interpretiert und einmal als was anderes,
das wird nicht passieren!

---------

Fehlermeldung:

in der main steht
heizung1.waermer(temperatur);

was soll Temparatur denn da heißen?
temperatur aus Heizung doch sicher nicht, warum willst du diese um genau ihre Temparatur erhöhen?

selbst wenn, dann musst du sie korrekt ansprechen
z.B.
heizung1.waermer(heizung1.getTemparatur());
// falls getTemparatur() denn sinnvoll definiert wäre und nicht System.out.println enthält, siehe oben ;)

aber ich denke, dass du was anderes willst, z.B. eine lokale Variable mit einem Testwert definieren,
das wäre dann schon die dritte mit dem gleichen Namen temparatur,
nimm lieber einen anderen..
 

Localhope

Mitglied
Ahso, ok. Nun wird mir langsam ein wenig klarer.

Ich habe das Programm soweit umgeändert. Laut Aufgabe ist definiert, dass es nur eine Variable geben darf. Also kann ich mir leider nicht noch mehrere ausdenken. Aber das ist erstmal egal. Das was ich gerade nicht verstehe, ist, warum die Ausgabe gleich bleibt. Ich habe das Programm wie folgt abgeändert:

Code:
public class Heizung {

//Aufgabe a)
	private float temperatur;
	
//Aufgabe b)
public Heizung(){
	temperatur=15f;
}

//Aufgabe c
public void temperaturanzeige(){
	System.out.println("Die Temperatur beträgt " + temperatur + "Grad.");
}

//Aufgabe d)
public void waermer(float temperatur){
	temperatur=temperatur+5;
}

//Aufgabe e
public void kuehler(float temperatur){
	this.temperatur=temperatur-45;
}

//Aufgabe f
public float getTemperatur(float temperatur){
	return temperatur;
}

public static void main(String[] args) {
	Heizung heizung1=new Heizung();
	heizung1.temperaturanzeige();
	heizung1.waermer(25f);
	heizung1.kuehler(10f);
	heizung1.getTemperatur(99f);
}
}

Die 99 in der Zeile heizung1.getTemperatur(99f); habe ich einfach eingefügt, da er sich sonst nicht mit zufrieden gegeben hätte. Sonst wäre das Programm nicht gelaufen. Nun gibt er aber nur aus, dass die Temperatur 15 ist. Und das immer, egal ob ich waermer oder kaelter ändere. Kann es sein, dass er sich immer nur den Wert aus dem Konstruktor nimmt? Denn zuerst wird ja immer die Main aufgerufen, dann rattert sie runter, am Ende steht dann die Methode getTemperatur, die ja 15 ausgibt. Somit müsste sie am Anfang stehen, damit sich auch die Methoden "waermer" und "kuehler" bemerkbar machen können, oder? (Und die Ausgabe natürlich auch an den Schluss stellen.) Hab ich das nun verstanden / richtig erklärt?
 

razor

Mitglied
Schau noch mal meinen ersten Beitrag, habe da etwas korrigiert.

Zu den Methoden:
Vieles hängt davon ab, was du in der Methode machen willst:

Willst du die Temperatur, die am Anfang auf 15 gesetzt wird, um einen bestimmten Betrag erhöhen, dann übergibt man diesen Betrag an die Methode :

Code:
public void waermer(float plustemperatur)  // in Klammern wird eine neue float zahl mit dem namen plustemperatur erzeugt
{  
   temperatur=temperatur+plustemperatur;  // die temperatur wird um diese plustemperatur erhöht
}
Dadurch erwartet die Methode einen float-Wert, deswegen musst du in der main:
heizung1.waermer(30f);
Beim Aufruf einen float-Wert übergeben



Willst du aber die Temperatur immer um einen festen Betrag erhöhen, beim Aufruf der Methode:

Code:
public void waermer()  // in Klammern bleibt leer
{  
   temperatur=temperatur+5;  // die temperatur wird um 5 erhöht
}
Dann brauchst du in der Main auch keinen Wert an die Methode zuübergeben
heizung1.waermer();

temperatur wird dabei um 5 erhöht


Java ist auch eine Insel
 

Localhope

Mitglied
Super, vielen Dank für eure Antworten, damit habt ihr mir sehr geholfen. Ich habe mich immer gewundert, warum er komische Zahlen angibt, dabei hatte ich eben in der Methode definiert dass er immer 5 ansteigen soll, und zusätzlich habe ich dann noch in der main die float-Werte verändert. Kein Wunder also. Entweder oder. Ich werde mir die Hilfe noch mal zusätzlich ausdrucken, dann kann ich nochmal draufschauen. Nun läuft es endlich so wie es laufen soll, ich bin gegeister :D Nun schaue ich mal ob ich das auch bei der nächsten Aufgabe anwenden kann.

Viele Grüße und ein dickes Danke!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
P Erste Schritte [gelöst]Erzeugen einer Klasse aus der Klassenbibliothek Java Basics - Anfänger-Themen 4
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
X problem mit equals.gelöst Java Basics - Anfänger-Themen 2
N Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 7
M Ist diese Aufgabe zu umständlich gelöst? Java Basics - Anfänger-Themen 9
S Aufgabe gelöst, lässt sich aber nicht kompilieren Java Basics - Anfänger-Themen 3
J Vereinigung von 2 Mengen [gelöst] Java Basics - Anfänger-Themen 2
W ProcessBuilder Problem -->gelöst - - Jetzt JEditorPane Problem Java Basics - Anfänger-Themen 6
A [gelöst]Array mit ArrayList-Einträgen Java Basics - Anfänger-Themen 12
B While Schleife steuern (gelöst) Java Basics - Anfänger-Themen 2
Strahlungsleck [gelöst]File Pfadangabe funktioniert nicht mit Servername/IP Java Basics - Anfänger-Themen 2
A [gelöst]Aus der Klasse heraus auf ein anderes Objekt zugreifen Java Basics - Anfänger-Themen 4
A [gelöst]Zwei Ausgaben, die eigentlich gleich sein sollten Java Basics - Anfänger-Themen 9
A [gelöst]Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 9
A [gelöst]ArrayList Java Basics - Anfänger-Themen 6
Bloodredangel [gelöst] Kompilieren von .java-Dateien per javac Java Basics - Anfänger-Themen 5
J Aufgabenverteilung über einen Zeitraum: So geschickt gelöst? Java Basics - Anfänger-Themen 3
S [gelöst] Wie kann ich später über Objekte zeichnen Java Basics - Anfänger-Themen 2
D Probleme bei Code Portierung von C# nach Java [Gelöst] Java Basics - Anfänger-Themen 4
L [Gelöst:] positive Null Java Basics - Anfänger-Themen 4
L Gelöst: Negative Eingaben sollen verweigert werden Java Basics - Anfänger-Themen 3
L [Gelöst] Cannot make a static reference ... Java Basics - Anfänger-Themen 12
vogella *Gelöst *Im Programm warten (wait()) Java Basics - Anfänger-Themen 2
S die konsole[gelöst] Java Basics - Anfänger-Themen 16
S schaltjahr (gelöst zu 90 %), allerdings folgeprob :/ Java Basics - Anfänger-Themen 18
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
B Einfache OCR zur Zahlenerkennung? Java Basics - Anfänger-Themen 6
M Einfache Datenfilterung Java Basics - Anfänger-Themen 15
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
H Einfache Frage zur Punktnotation objektname.methode(wert) Java Basics - Anfänger-Themen 2
B Einfache HSQLDB? (lock acquisition failure) Java Basics - Anfänger-Themen 2
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
O Ganz einfache Frage - Array Java Basics - Anfänger-Themen 5
E Einfache Java Verschlüsselung Java Basics - Anfänger-Themen 4
J Einfache Frage zu "null" Java Basics - Anfänger-Themen 2
J Einfache pub/sub Lösung mit ausführlicher Doku Java Basics - Anfänger-Themen 5
R Gibt es Eine einfache Programierung dieser Methoden Java Basics - Anfänger-Themen 8
K einfache Kombinatorik Java Basics - Anfänger-Themen 4
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Eine einfache Verschlüsselung schreiben Java Basics - Anfänger-Themen 3
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
X Einfache Frage; wie soll ich die spezielle float var speichern? Java Basics - Anfänger-Themen 2
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
D Klassen Gesucht: Einfache Beispiel-Klasse für einen Datentyp Java Basics - Anfänger-Themen 7
K Möglichkeiten um eine einfache Animation darzustellen Java Basics - Anfänger-Themen 7
L Einfache Lineare Suche Java Basics - Anfänger-Themen 7
P Erste Schritte Einfache For Schleife Java Basics - Anfänger-Themen 10
M Einfache Java Operation, cheggs net Java Basics - Anfänger-Themen 2
V Erste Schritte Einfache Rechnung mit Exponenten Java Basics - Anfänger-Themen 3
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
E Einfache For-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 2
shiroX OOP Türme von Hanoi - einfache grafische Ausgabe Java Basics - Anfänger-Themen 2
C Extrem einfache Aufgabe falsch beantwortet :$ Java Basics - Anfänger-Themen 6
Z Super einfache Frage For-Schleife im Detail Java Basics - Anfänger-Themen 3
N Potenzierung durch einfache Operatoren Java Basics - Anfänger-Themen 13
H Einfacher Editor, Einfache Handelsanweisungen Java Basics - Anfänger-Themen 2
H Sehr einfache Java-Programme Java Basics - Anfänger-Themen 24
H Einfache Client/Server-Kommunikation Java Basics - Anfänger-Themen 16
-horn- Einfache graphische Darstellung von 3D Koordinaten für Flugbahnen? Java Basics - Anfänger-Themen 4
B Einfache jsp Seite darstellen Java Basics - Anfänger-Themen 9
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
J Einfache Designfrage Java Basics - Anfänger-Themen 4
R Methoden Einfache Loops? Java Basics - Anfänger-Themen 8
E einfache Frage zu private Java Basics - Anfänger-Themen 26
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
F Einfache Klassen für Datum und Zeit Java Basics - Anfänger-Themen 3
Spin Einfache Anfänger Frage setVisible von Panels Java Basics - Anfänger-Themen 5
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5
D einfache Quizfrage programmieren Java Basics - Anfänger-Themen 11
B Einfache Applets für Webseite Java Basics - Anfänger-Themen 10
K Einfache Rekursion - Wert wird nicht in Variable gespeichert Java Basics - Anfänger-Themen 7
U Einfache Aufgabe Java Basics - Anfänger-Themen 5
E Einfache Frage zur Parameterübergabe in Methoden Java Basics - Anfänger-Themen 8
M einfache Übungsaufgaben gesucht Java Basics - Anfänger-Themen 7
M Einfache Rechnung(R=U/I) Java Basics - Anfänger-Themen 12
D Wohl eine einfache Frage... Java Basics - Anfänger-Themen 2
W Einfache Passwortabfrage funktioniert nicht Java Basics - Anfänger-Themen 3
P einfache GUI-Elemente Java Basics - Anfänger-Themen 10
F Vererbung (einfache Frage) Java Basics - Anfänger-Themen 5
S 2 Einfache Fragen (Exception Breakpoint, Konstruktor) Java Basics - Anfänger-Themen 4
L einfache Klasse erstellen Java Basics - Anfänger-Themen 16
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
P Einfache Bedingung (?) in Java Java Basics - Anfänger-Themen 3
W Einfache Rekursion Java Basics - Anfänger-Themen 14
T Einfache Textausgabe .java unter OS X Java Basics - Anfänger-Themen 13
B einfache Rekursion Java Basics - Anfänger-Themen 9
A [Hilfe] einfache Aufgabe Java Basics - Anfänger-Themen 26
A Einfache java Verschlüsselung HILFE Java Basics - Anfänger-Themen 3
M einfache java application Java Basics - Anfänger-Themen 4
S Kann einfache Texteingabe nicht auswerten! Java Basics - Anfänger-Themen 3
M einfache frage zum Jdk-Compiler Java Basics - Anfänger-Themen 3
Spin einfache Frage zu Klassen Java Basics - Anfänger-Themen 12
J einfache Tastendrücke in einem JFrame abfragen Java Basics - Anfänger-Themen 2
C "einfache" If-Abfrage Java Basics - Anfänger-Themen 15
H Einfache Ausgabe eines Arrays in einen File Java Basics - Anfänger-Themen 8
F Einfache Liste hinten was einfügen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben