Umrechnungsprogramm

MME123

Mitglied
Hallo,

ich bin absoluter Anfänger in Sachen programmieren mit Java / Blue J.

Ich habe im Unterricht eine Hausarbeit bekommen die ich leider nicht hin bekomme und deshalb auf eure Hilfe hoffe.

Die Aufgabe lautet ein Programm mit Blue J zu schreiben, welches mir die Druckeinheit mmHg in Pascal umrechnet.
Der Umrechnungswert ist 1mmHg = 133.322368 Pa.
Desweiteren soll der Pascal-Wert noch in der entsprechenden Größeneinheit Ausgegeben werden.

Folgende Einheiten sollen berücksichtigt werden

-Wenn Ergebnis kleiner als 1 dann mal 10^6 und Ausgabe in µPa
-Wenn Ergebnis zwischen 1 und 99 Ausgabe in Pa
-Wenn Ergebnis zwischen 100 und 999 teile durch 100 und Ausgabe in hPa
-Wenn Ergebnis zwischen 1000 und 999.999 teile durch 1.000 und Ausgabe in kPa
-Wenn Ergebnis gleich oder über 1.000.000 teile durch 1.000.000 und Ausgabe in MPa

Das Programm sollte also etwa so funktionieren:

Eingegebener mmHg Wert mit 133,322368 multiplizieren,
je nach dem, in welchem Zahlenbereich das Ergebnis liegt umrechnen in Größeneinheit
und Ausgabe mit passender Größeneinheit µPa,Pa,hPa,kPa oder MPa.

Wäre super wenn mir jemand damit Helfen könnte, ich bekomme leider nichts funktionierendes hin :( .
 

kaoZ

Top Contributor
Schon eigenen Code geschrieben ? wenn oder falls ja , poste mal deinen Ansatz bitte.

Soll das Ganze Konsolen basiert sein oder mit GUI ?
 
Zuletzt bearbeitet:

MME123

Mitglied
So weit hab ich mal angefangen, die if Bedingungen wollte ich dann mit allen Zahlenbereichen noch einsetzen, jedoch klappt das soweit schon garnicht..


public class Umrechnen {

public static void main(String[] args) {



double mmHg;
double mue_PA, PA, h_PA, k_PA, M_PA;

System.out.println("mmHg Wert ");
mmHg = Quecksilbereinheit();

if(1<=mmHg && mmHg<=100){

PA = mmHg*133.332;
System.out.println(PA + "PA");
}
}
 
Zuletzt bearbeitet:

MME123

Mitglied
Die umzurechnenden Werte sollten nicht in der Konsole eingegeben werden, sondern in nem extra Fenster (denke das ist dann GUI? ).
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Java Code bitte in Java Tags

Also:
Java:
public class Umrechnen {

public static void main(String[] args) {



double mmHg;
double mue_PA, PA, h_PA, k_PA, M_PA;

System.out.println("mmHg Wert ");
mmHg = Quecksilbereinheit();

if(1<=mmHg && mmHg<=100){

PA = mmHg*133.332;
System.out.println(PA + "PA");
}
}

argh.... ist das bis jetzt alles oder hast du noch andere Klassen die du nicht gepostet hast
Code:
Quecksilbereinheit();
z.B?
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Mal kurz was zum Grundlegenden Aufbau, da deine Werte ja Fix sind könntest du dementsprechend Konstanten dafür deklarieren; z.B :



Java:
public class Converter {
	
	//Konstante -/- Attribute
	final static double CONVERT_VALUE = 133.322368;
	
	//Standard Konstruktor & Konstruktoren
	public Converter() {}
	
	//Methoden -/- erst private dann öffentliche
	public void convertToPascal(){
		
	}
}

Desweiteren brauchst du eine Funktion/Methode die einen Wert entgegen nimmt und dir den Umgerechneten wert zurück gibt,
also muss ja möglich deiner Methode einen Wert übergeben zu können, der dann umgerechnet wird, also erweitern wir die Methode
Code:
 convertToPascal()
so das diese einen Wert entgegen nehmen kann.

Java:
public void convertToPascal(double value){}

Jetzt haben wir schon einen festen Umrechnungsfaktor und die Möglichkeit deiner Methode einen Wert zu übergeben, was wir brauchen ist die Möglichkeit das diese Methode uns direkt das umgerechnete Ergebnis zurück gibt, also ändern wir den Rückgabetyp von
Code:
void
auf
Code:
double
Java:
public double convertToPascal(double value){
  return 0.0;
}

jetzt kannst du der Methode einen wert (double) übergeben und bekommst, insofern implementiert den umgerechneten wert zurück, was fehlt ist die Umrechnung und die Anweisungen wie die Umrechnung wann zurückgegeben wird.

Stichwort : IF-Anweisungen, nun tob dich daran mal etwas aus und versuche mal eine Anweisung für den ersten Fall zu schreiben.



Java:
wenn(...){
  //Dann
}sonst{
  //Das hier
}

[EDIT]
Was die Methode als erstes machen musst steht ja oben in deinem Text, nämlich dein übergebenen Wert , mit dem Umrechnungsfaktor multiplizieren, und erst dann wären die Anweisungen wichtig die prüfen wie groß der Wert ist und wie er ausgegeben werden muss ;) , an diesem Punkt würden wir dann auch zu der Grafischen Schnittstelle für dein Benutzer kommen , also der GUI.
[/EDIT]
 
Zuletzt bearbeitet:

MME123

Mitglied
Sorry wegen der falschen Form ;)

mmHg = Quecksilbereinheit

das muss nicht unbedingt mit ins Programm.

Nein mehr habe ich bisher leider noch nicht hinbekommen, ich hatte davor nur Aufgaben bei denen schon ein Ansatz vorgegeben (hatten nichts mit dem Umrechner zu tun) , deshalb tu ich mich bei der Aufgabenstellung so schwer..
 

MME123

Mitglied
Hab jetzt das ganze nochmals versucht, nun kommt aber immer noch eine Fehlermeldung, kann mir jemand sagen woran das liegt / was ich noch ändern muss?


[Java]


public class Converter
{

private double mmHg;
private final double Umrechnungsfaktor = 133.322368;

public void setzeMmhgwert (double neummhg)
{
mmHg = neummhg;
}

public void Umrechnen()
{
double druck = mmHg * Umrechnungsfaktor;
}

public static void main(String[] args)
{
if((1<=druck) && (druck<100))
{
System.out.println(druck + "Pa");
}
if(1 > druck )
{
double druckmue = druck*1000000;
System.out.println( druckmue + "µPa");
}
if((100 <= druck) && (druck <1000))
{
double druckh = druck/100;
System.out.println( druckh + "hPa");
}
if((1000 <= druck) && (druck <1000000))
{
double druckk = druck/1000;
System.out.println( druckk + "kPa");
}
if(1000000 <= druck )
{
double druckM = druck/1000000;
System.out.println( druckM + "MPa");
}
else(druck < 0)
{

System.out.println( "Ungültige Eingabe");

}
double druck = 0.0;
}
[/code]
 

Unlikus

Mitglied
Zu erst mal haben Fehlermeldungen immer einen Namen, Fehlercode, Test etc. der immer zu posten ist, Hellseher findest du in anderen Foren.
Deine Funktion Umrechnen macht wenig Sinn, denn sie erzeugt nur eine variable druck und gibt nichts zurück und die Variable verfällt nach der Funktion wieder.
Funktionsnamen möglcihst klein beginnen.
besser wäre:
Java:
public double umrechnen(){
    return mmHg * Umrechnungsfaktor;
}
Dann solltest du Wissen, ein Programm startet immer in der Main Methode, der erste befehl für den Compiler ist also eine Prüfung auf die Werte von Druck, obwohl an der Stelle druck noch gar nicht definiert ist
 
Zuletzt bearbeitet:

MME123

Mitglied
Ok danke, habe ich geändert(return statt void), nun kommt aber nen Fenster mit dem Fehler:

"An error occurred in a file for which the source cannot be found.
class: source line number:
Converter.java:18
class, interface, or enum expected"
 
Zuletzt bearbeitet:

MME123

Mitglied
an der main-methode hab ich noch nichts geändert..

kann ich einfach den ersten Teil

Java:
 private double mmHg;
  private final double Umrechnungsfaktor = 133.322368;   
  
  public void setzeMmhgwert (double neummhg)
{
    mmHg = neummhg;
}
   
public double umrechnen()
{
    return mmHg * Umrechnungsfaktor;
}
}

direkt hinter die main methode setzen?
 

Unlikus

Mitglied
nein.
Also erst einmal musst du dir klarmachen, was eine Funktion ist.
Beispiel:
Java:
int addieren(int a, int b){
    return a+b;
}
Die Funktion addieren, will 2 parameter, nämlich a und b. Sie gibt auch einen Rückgabewert, nämlich einen int, der mit return zugewiesen wird.
Jetzt kannst du die Funktion überall in deinem Programm nutzen indem du sie mit den Parametern aufrufst:
Java:
a=addieren(b,c);
Dieser Javacode nutzt die Funktion, gibt der Funktion die beiden Parameter hier b unc und speichert den Rückgabewert in a.
Wenn du das vollständig verstanden hast, wirst du dein Problem erkennen.
Im Notfall hilft Google bestimmt mir noch besseren Erklärungen weiter.
dieses public, private, static und sonst was du in Java immer findest, ist für dich am Anfang erst mal komplett uninteressant, du kannst es erst mal einfach weglassen.
 

kaoZ

Top Contributor
So, nochmal ganz langsam

du packst alles in die main methode, dies ist suboptimal, letztendlich kann sich diese methode sogar in einer separaten klasse befinden, sie dient deinem Programm als Einstiegspunkt, die Berechnungen finden hier alle in der convertToPascal Methode der Converter Klasse statt.

Java:
public class Converter {
	
	final static double CONVERT_VALUE = 133.322368;
	
	public Converter(){}
	
	public double convertToPascal(double value){
		
		double result = value * CONVERT_VALUE;
		
// dient nur zu Veranschaulichung von IF-Statements

		if(result < 1){
			return result * ( 10 ^ 6 );
		}
		if(result < 100) {
			return result;
		}
		if(result > 100) {
			return result / 1000;
		}
		//usw usw.....
		
		return value;
	}

}

Und hier die Klasse die dein Converter Objekt erzeugt und die Methode aufruft und ihr einen Wert zum Umrechnen übergibt, hier OHNE Gui oder Konsoleneingabe !

Java:
public class ConverterTest {
	
	public static void main(String[] args) {
		Converter converter = new Converter();
		
                /* Die convertToPascal methode gibt dir das Ergebnis als double zurück, diesen Wert 
                 * können wir in einer Print anweisung vom System ( hier unformatiert ) 
                 * ausgeben lassen.*/
 
		System.out.println(converter.convertToPascal(12.0));
	}

}

Ausgabe : 

1.5998684160000003

[TIPP]
Denkbare rückgabewerte wären z.B auch String, so könnte man das Ergebnis direkt formatiert ausgeben lassen, wenn allerdings erstmal ein GUI zur Grafischen Darstellung existiert ist dies nebensächlich, da wahrscheinlich ein extra Feld für das Ergebnis existieren soll.
[/TIPP]



Jetzt sind zumindest schonmal ein Teil der bedingungen implementiert, der eingegebene Wert wird mal dem Umrechnungsfaktor gerechnet, und dann wird anhand der bedingungen geprüft in welchem bereich der Wert liegt und dementsprechend ausgegeben, die restlichen bedingungen kannst du denke ich erstmal versuchen alleine zu realisieren.
 
Zuletzt bearbeitet:

Neue Themen


Oben