[Java] Probleme mit der Hausaufgaben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Enigma120, 17. September 2012 .

Schlagworte:
  1. 17. September 2012
    Zuletzt bearbeitet: 17. September 2012
    Probleme mit der Hausaufgaben

    Grüsse
    Ich zeig euch mal den quellcode und die ganze aufgabe selber noch dazu.

    Die Aufgabe

    Upload images and files easily on loaditup.de

    Temperatur.java

    Code:
    package ch.modul226.temperatur;
    
    public class Temperatur {
     
    // Temperatur temperatur = new Temperatur();
    
     private double value;
     private String scale;
     
     public Temperatur (String scale,Double value){
     super();
     }
     
     public Temperatur (String scale,Integer value){
     super();
     }
     
     public Temperatur (Double value){
     super();
     }
     
     public Temperatur (Integer value){
     super();
     }
     
     public void setCelsius(Double value){
     this.value=value;
     }
     
     public void setCelsius(Integer value){
     this.value=(double)value;
     
     }
     
     public void setFahrenheit(Double value){
     this.value=value;
     }
     
     public void setFahrenheit(Integer value){
     this.value=(double)value;
     }
     
     public void setKelvin(Double value){
     this.value=value;
     }
     
     public void setKelvin(Integer value){
     this.value=(double)value;
     }
     
     
     public boolean isCelsius(){
     return scale.equals("Celsius");
     
     }
     
     public boolean isFahrenheit(){
     return scale.equals("Fahrenheit");
     
     }
     
     public boolean isKelvin(){
     return scale.equals("Kelvin");
     
     }
     
     public Temperatur toCelsius()
     {
     if(scale.equals("Kelvin")== true)
     this.value=this.value +273.15;
     this.scale=("Celsius");
     return this;
     }
     
     public Temperatur toFahrenheit()
     {
     if(scale.equals("Celsius")== true)
     this.value=(this.value *9) / 5+32;
     this.scale=("Fahrenheit");
     return this;
     }
     
     public Temperatur toKelvin(){
     if(scale.equals("Kelvin")== true)
     this.value=this.value -273.15;
     this.scale=("Kelvin");
     return this;
     
     }
     
     public double getValue(){
     return this.value;
     
     }
    
    }
    
    Experimente.java
    Code:
    package ch.modul226.temperatur;
    import ch.modul226.temperatur.Temperatur;
    
    
    public class Experimente {
    
     /**
     * @param args
     */
     public static void main(String[] args) {
     Temperatur temp = new Temperatur(100, "Celsius");
     System.out.println(temp.isCelsius()); // true
     System.out.println(temp.isFahrenheit()); // false
     System.out.println(temp.isKelvin()); // false
    /* System.out.println(temp.getValue()); // 100
     System.out.println(temp.toFahrenheit().getValue()); // 212
     System.out.println(temp.toKelvin().getValue()); // 373.15
     System.out.println(temp.getValue()); // 373.15
     
     System.out.println(temp.toFahrenheit().toKelvin().toCelsius().toFahrenheit().toKelvin().toCelsius().getValue()); // 100
     System.out.println(temp.toCelsius().toCelsius().toCelsius().getValue()); // 100
     */
     }
    
    }
    

    Ich will nicht das ihr mir die Aufgabe löst. Ich will sie verstehen und gerne wissen was ich falsch gemacht habe.

    Ich danke euch schonmal im vorraus und wünsch euch einen schönen tag :]
     
  2. 17. September 2012
    Zuletzt bearbeitet: 17. September 2012
    AW: Probleme mit der Hausaufgaben



    In der Temperatur-Klasse benutzt du häufig das Wörtchen "super". Schau dir dessen Bedeutung genau an. Google ist hierbei dein Freund. Soviel sei verraten: deine Konstruktoren (wenn dir dieser Begriff nichts sagt, ebenfalls googlen) machen gar nichts, deshalb gibt ein System.out.println() auch nichts aus.
     
    1 Person gefällt das.
  3. 17. September 2012
    AW: Probleme mit der Hausaufgaben

    Besser? Tut mir leid aber nach deiner Nachricht mit den grammatik-fehler, hat mich alles aufgeregt...

    Super(); Ist ja dazu da um speicher bereit zustellen. Eigentlich wie im C++ mit den Arrays. Ich verstehe nicht so ganz warum das falsch seien soll. Ich meine dies sagte mir der Lehrer auch das es richtig so sei.
     
  4. 17. September 2012
    AW: Probleme mit der Hausaufgaben

    Das ist falsch. super() ruft den Konstruktor der Elternklasse auf, der keine Argumente entgegen nimmt. In deinem Fall ist das einfach der Standardkonstruktor von Object. Die deinen Konstruktoren übergebenen Werte werden daher auch nicht in den entsprechenden Membervariablen gespeichert - wie es wahrscheinlich von dir gedacht war.
     
  5. 17. September 2012
    AW: Probleme mit der Hausaufgaben

    Ach mist... Naja gut danke für den Hinweis ich nehme mal die super(); mal raus. Frage ist jetzt nur was lege ich dann genau in den 4 Temperatur Methoden Hinein? Und wie kann ich die auf Experiment.java aufrufen?

    Code:
    Exception in thread "main" java.lang.NullPointerException
     at ch.modul226.temperatur.Temperatur.isCelsius(Temperatur.java:53)
     at ch.modul226.temperatur.Experimente.main(Experimente.java:13)
     
  6. 17. September 2012
    Zuletzt bearbeitet: 17. September 2012
    AW: Probleme mit der Hausaufgaben

    Die NullpointerException gibt dir einen Hinweis auf die Fehlerursache. Diese Exception taucht immer dann auf, wenn eine Funktion auf nichtvorhandene (oder nicht instanzierte) Werte/Variablen/Objekte aufgerufen wird.

    In den Konstruktoren von Temperature kannst du die Variablen "value" und "scale" exact auf die gleiche Art belegen, wie du das in setCelsius(), setFahrenheit(),... machst.

    Beispielsweise sagst du in Temperatur(int zahl):
    DIESESOBJEKT weist seiner Eigenschaft value den int zahl zu. (sprich: value = zahl) Zugriff auf ein Objekt bekommst du, indem du einen Punkt setzt. Mal ein Beispiel:
    Code:
    City city = new City(); //ein Exemplar der Klasse "City" wird erzeugt. Dieses Objekt heißt city
    city[B].[/B]setName("Köln"); //über eine Methode, die in der City-Klasse definiert ist, wird "Köln" als Name für das Exemplar city zugewiesen.
    
    Das hat insgesamt denselben Effekt wie:

    City city = new City("Köln");

    vorrausgesetzt, es gibt für City einen Konstruktor wie:
    Spoiler
    public City(String name){
    this.name = name;
    }
     
  7. 21. September 2012
    AW: Probleme mit der Hausaufgaben

    Entlich gehts <3

    Nur die formel gibt nicht das richte aus

    was sollte ausgeben
    true
    false
    false
    100.0
    212.0
    373.15
    373.15
    100.0
    100.0


    was er aus gibt
    true
    false
    false
    100.0
    212.0
    485.15
    485.15
    212.0
    212.0

    temperatur.java
    Code:
    package ch.modul226.temperatur;
    
    public class Temperatur {
     
     private String scale;
     private Double value;
     
     public Temperatur(String scale, Double value){
     this.scale = scale;
     this.value = value;
     }
     
     public Temperatur(String scale, Integer value){
     this.scale = scale;
     this.value = (double)value;
     }
     
     public Temperatur(Double value){
     this.value = value;
     }
     
     public void setCelsius(Double value){
     this.value=value;
     }
    
     public void setCelsius(Integer value){
     this.value=(double)value;
     }
     
     public void setFahrenheit(Double value){
     this.value=value;
     }
    
     public void setFahrenheit(Integer value){
     this.value=(double)value;
     }
     
     public void setKelvin(Double value){
     this.value=value;
     }
    
     public void setKelvin(Integer value){
     this.value=(double)value;
     }
     
     boolean isCelsius(){
     return scale.equals("Celsius");
     }
     
     boolean isFahrenheit(){
     return scale.equals("Fahrenheit");
     }
     
     boolean isKelvin(){
     return scale.equals("Kelvin");
     }
     
     public Temperatur toCelsius(){
     if(scale.equals("Kelvin") == true){
     this.value = this.value - 273.15;
     this.scale = "Ceslius";
     }
     return this;
     }
     
     public Temperatur toFahrenheit(){
     if(scale.equals("Celsius") == true){
     this.value = ((this.value *9)/5) + 32;
     this.scale = "Fahrenheit";
     }
     return this; 
     }
     
     public Temperatur toKelvin(){
     if(scale.equals("Fahrenheit") == true){
     this.value = this.value + 273.15;
     this.scale = "Kelvin";
     }
     return this;
     }
     
     public Double getValue(){
     return this.value;
     }
     
     
     public Temperatur(Double value, String scale){
     super();
     this.value = value;
     this.scale = scale;
     }
     
     public Temperatur(Integer value){
     super();
     this.value = (double)value;
     }
     
    }
    
    experiment.java
    Code:
    package ch.modul226.temperatur;
    import ch.modul226.temperatur.Temperatur;
    
    
    public class Experimente {
    
     public static void main(String[] args) {
     Temperatur temp = new Temperatur(100.0, "Celsius");
     
     System.out.println(temp.isCelsius()); //true
     System.out.println(temp.isFahrenheit()); //false
     System.out.println(temp.isKelvin()); //false
     System.out.println(temp.getValue()); //100 
     System.out.println(temp.toFahrenheit().getValue()); //212
     System.out.println(temp.toKelvin().getValue()); //373.15
     System.out.println(temp.getValue()); //373.15
     
     System.out.println(temp.toFahrenheit().toKelvin().toCelsius().toFahrenheit().toKelvin().toCelsius().getValue());
     //100
     System.out.println(temp.toCelsius().toCelsius().toCelsius().getValue()); 
     //100
     
     }
    
    }
    
     
  8. 21. September 2012
    Zuletzt von einem Moderator bearbeitet: 13. April 2017
    AW: Probleme mit der Hausaufgaben

    Was geht eigentlich hier ab?

    Ankündigungen - Programmierung & Entwicklung
    Ansonsten lege ich dir nahe, dich mal mit Grundlagen von Java bzw. der OOP befassen. Es hilft dir nichts, wenn du einfach Code aus Foren übernimmst.
     
  9. 21. September 2012
    Zuletzt von einem Moderator bearbeitet: 13. April 2017
    AW: Probleme mit der Hausaufgaben

    diese regel bezieht sich doch eher darauf, dass man hier nicht einfach die HA vorlegen soll und erwarten darf, dass sie jemand löst.
    er hat ja ein konkretes problem mit seinem quellcode gehabt, warum sollte man ihm da nich helfen dürfen?
     
    1 Person gefällt das.
  10. 22. September 2012
    AW: Probleme mit der Hausaufgaben

    Mal abgesehen davon, dass das was du da programmiert hast in meinen Augen gar keinen Sinn macht, rate ich dir in Zukunft für solche Entscheidungen keine Strings zu nehmen.
    Denn schnell hat man sich da mal vertippt, so wie du in deinem Code, bezüglich der "scale" Variable.
    Dafür gibts enums Enum Types (The Java&trade; Tutorials
    Learning the Java Language Classes and Objects)





    Außerdem solltest du auch die Formeln zum Umwandeln korrekt anwenden.

    siehe zB hier: Kelvin – Wikipedia

    Damit wäre im Prinzip schon die Hälfte der Arbeit erledigt
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.