Klassen verbinden

Status
Nicht offen für weitere Antworten.

Sinista

Mitglied
Hi

ich habe ein programm das mir die temperatur umwandelt.
jetzt will ich den teil der die berechnung macht in eine eigene klasse auslagern.

wie genau bekomme ich es hin das die main klasse mit dem scanner die variablen in der anderen klasse erkennt.
ich hab es schon mit vererbenn versucht aber das geht leider net.

er sagt mir das die variablen vom scanner nicht benutzt werden?


main klasse
package aufgabe4;

import java.util.Scanner;

public class Temperaturumrechnungstabelle {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
System.out.println("Bitte geben Sie einen Startwert in Kelvin ein:");
double start = scan.nextDouble();
System.out.println("Bitte geben Sie einen Endwert in Kelvin ein:");
double ende = scan.nextDouble();
System.out.println("Bitte geben Sie die Schrittweite in Kelvin an:");
double schrittweite = scan.nextDouble();


System.out.printf("\n\n\n Temperatur-Umrechnungstabelle \n");
System.out.printf("======================================================== \n");
System.out.printf(" K C F R \n");
System.out.printf("________________________________________________________ \n");



}// main

}// Temperaturumrechnungstabelle
package aufgabe4;

public class Berechnung extends Temperaturumrechnungstabelle {


{
for (double kelvin = start ; kelvin <= ende; kelvin += schrittweite){

double celsius = kelvin - 273.15;
double fahrenheit = 9.0 * celsius / 5.0 + 32.5;
double reaumur = celsius * 0.8;

System.out.printf( "%7.2f %14.2f %14.2f %14.2f\n", kelvin, celsius, fahrenheit, reaumur);

}// for


}
}
 
Java:
public class Berechnung {

	public static void berechne(double start, double ende, double schrittweite) {
		for (double kelvin = start; kelvin <= ende; kelvin += schrittweite) {

			double celsius = kelvin - 273.15;
			double fahrenheit = 9.0 * celsius / 5.0 + 32.5;
			double reaumur = celsius * 0.8;

			System.out.printf("%7.2f %14.2f %14.2f %14.2f\n", kelvin, celsius,
					fahrenheit, reaumur);
		}// for
	}// berechne
}

Eine Klasse mit einer statischen Methode, die als Parameter deine eingegebenen Werte erhält und die Berechnungen durchführt.

In der Klasse Temperaturumrechnungstabelle rufst du diese Methode dann an der gewünschten Stelle auf mit
Java:
Berechnung.berechne(start, ende, schrittweite);
 
viel schöner wär doch eine Klasse "Temperature", welches man mit new Temperature(int type, float temp) erstellen kann, also z.B. new Temperature(Temperature.CELSIUS, 20.4). dann Methoden wie int getCelsiusValue(), int getKelvinValue() etc.
 
Bräuchte nochmal hilfe zu dem programm

Und zwar will ich das jetzt ein wenig umschreiben
so das ich zu beginn erst eine eingabe mache von welcher einheit man es in die andere umrechnen lassen will.

jetzt weiß ich net wie ich es schaffe das man nach einer string eingabe von z.B: celsius er die rechnung macht.

könnt ihr mir da helfen?
 
Java:
public class Temperature{

	public enum Unit{
		KELVIN, CELSIUS, FAHRENHEIT, REAUMUR
	}

	private double kelvin;

	public Temperature(double kelvin){
		this(kelvin,Unit.KELVIN);
	}

	public Temperature(double value,Unit unit){
		switch(unit){
			case CELSIUS:
				// kelvin = blubb °C
				break;
			case FAHRENHEIT:
				// kelvin = blubb °F
				break;
			case KELVIN:
				kelvin = value;
				break;
			case REAUMUR:
				// kelvin = blubb °R
				break;
		}
	}

	public double getKelvin(){
		return kelvin;
	}

	public static void main(String[] args){
		System.out.println(new Temperature(Double.parseDouble(args[0]),Unit.valueOf(args[1])).getKelvin());
	}
}
Dies ist eine durchaus ausbaubare Skizze. Die Kommentarzeilen sind nur Dummys, an den Stellen musst du noch die Umrechnung in Kelvin vollziehen. Du könntest auch eine Methode entwerfen, die den Wert eines Temperatures in die gewünschte Einheit umrechnet und zurückgibt.

Ark
 
Ich blick da leider net so ganz durch wie ich das alles verbinden soll. kenn mich mit java noch net so aus.
Ich hab 2 klassen
die erste main mit dem scanner
die zweite mit der berechnung d

dan muss ich anstelle der berechnung ersetzen da ich diese art der berechnung ja net brauche.


Du könntest auch eine Methode entwerfen, die den Wert eines Temperatures in die gewünschte Einheit umrechnet und zurückgibt.

Ark

Hab das mal versucht mit if anweisungen. ich bin mir net sicher ob es klappt, wäre vielleicht net die eleganteste lösung aber immerhin.

Code:
public static void rechnung ( String starteinheit, String zieleinheit , double start, double ende, double schrittweite){
        
        String Celsius = null;
        String Kelvin = null ;
        String Fahrenheit = null;
        String Reaumur = null;
        
        if (starteinheit == Kelvin && zieleinheit  == Celsius) {
            for(double kelvin = start; kelvin <= ende; kelvin += schrittweite){
                double celsius = kelvin - 273.15;
                System.out.printf("%7.2f %14.2f ", kelvin, celsius);
            }
        }
        else if (starteinheit == Kelvin && zieleinheit == Fahrenheit )    {
            for(double kelvin = start; kelvin <= ende; kelvin += schrittweite){
                double celsius = kelvin - 273.15;
                double fahrenheit = 9.0 * celsius / 5.0 + 32.5;
                System.out.printf("%7.2f %14.2f ", kelvin, fahrenheit);
            }
        }
            
    }
das hat auch für die erste umrechnung gefunzt nur leider gibt er mir danach nix mehr aus wenn ich die nächsten rechnungen zufüge. auch keinen fehler.
 
Zuletzt bearbeitet:
String vergleicht man so:
myString1.equals(myString2)

Zusatzinfo:
Man schreibt Variablen- und Methodennamen im camelCase
Klassennamen im CamelCase

siehe dazu die Java Language Convention
 
in deinem Programm hast du
Java:
String Celsius = null;
String Kelvin = null;
...
1. Dein Kelvin ist null
2. Dein Kelvin ist = Celsius
3. Alle Typen sind null
4. Sie sind alle gross geschrieben
5. Was würdest du von folgenden Zeilen halten?
Java:
        String celsius = "Celsius";
        String kelvin = "Kelvin";
        String fahrenheit = "Fahrenheit";
        String reaumur = "Reaumur";
6. Was denst du über Bücher, welche dir solch einfache Sachen erklären würden? z.B. Galileo Computing :: Java ist auch eine Insel (8. Auflage)
 
@Sinista: Ein heißer Tipp: versuche nicht, "alle in alle" Einheiten umzurechnen, sondern nimm dir eine Einheit, z.B. Kelvin, und rechne einmal alles in Kelvin und einmal von Kelvin in alles. So brauchst du nur 2n viele Formeln (und nicht n²).

Ark
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben