Von Joule in Kalorien umrechnen mit switch und case

Simon100

Mitglied
Guten Abend,

habe morgen ein Praktikum und habe dafür ein Programm geschrieben was von Joul mach Kalorien umrechnet.

Ich habe das Programm mit if und else geschrieben weil es für mich so am einfachsten ist, nun habe ich heute gehört das ich switch und case benutzen soll.

Habe damit sehr große Probleme.

Hier ist das Programm mit if und else. Darunter befindet sich meine Idee mit switch und case.

[JAVA=1]

import javax.swing.*;

class Joule_Kalorien {

public static double jink(double zahl)
{
double kalorie = zahl*0.238663;
return kalorie;
}


public static double kinj(double zahl)
{
double joule = zahl/0.238663;
return joule;
}


public static void ausgabe1(double kalorie, double zahl)
{
JOptionPane.showMessageDialog(null, zahl+" Joule enspricht "+kalorie+" cal!", "Joule in Kalorien", JOptionPane.PLAIN_MESSAGE);
}


public static void ausgabe2(double joule, double zahl)
{
JOptionPane.showMessageDialog(null, zahl+" cal enspricht "+joule+" Joule!", "Kalorien in Joule", JOptionPane.PLAIN_MESSAGE);
}

public static void main(String args[]) {

int i=0;
String str[] = {"J -> cal", "cal -> J"};

i = JOptionPane.showOptionDialog(null,
"Umrechnen von ... nach ...",
"Umrechnen",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
str,
JOptionPane.YES_OPTION);




if(i==0)
{
String eingabe1 = JOptionPane.showInputDialog("Geben Sie den Wert in Joule an!");
double zahl = Double.parseDouble(eingabe1);

if(zahl<0)
{
JOptionPane.showMessageDialog(null, "Bitte geben Sie nur positive Zahlen ein!", "Warning", JOptionPane.WARNING_MESSAGE);
}

else
{
double kalorie=jink(zahl);
ausgabe1(kalorie,zahl);
}
}

if(i==1)
{
String eingabe2 = JOptionPane.showInputDialog("Geben Sie den Wert in Kalorien an!");
double zahl = Double.parseDouble(eingabe2);

if(zahl<0)
{
JOptionPane.showMessageDialog(null, "Bitte geben Sie nur positive Zahlen ein!" , "Warning", JOptionPane.WARNING_MESSAGE);
}

else
{
double joule=kinj(zahl);
ausgabe2(joule,zahl);
}
}

System.exit(0);
}
}

[/code]



Zu dem muss ich noch sagen das J nach cal (entsricht Yes.Option) und von cal nach J (entsricht NO.Option.

Das Programm funktoniert so nicht wie ich es geschrieben habe und ich muss das auch so machen das wenn eine negative zahl in das eingabefeld eingegeben wird das der eine warnung rausgibt wie das obere Programm. Da hatte ich aber gar keine idee wie ich das machen soll.

Ich hoffe ihr könnt mir helfen.

Java:
switch (i)
		{
		case JOptionPane.YES_OPTION : String eingabe1 = JOptionPane.showInputDialog("Geben Sie den Wert in Joule an!");
			double zahl = Double.parseDouble(eingabe1);
			
				
				double kalorie=jink(zahl);
				ausgabe1(kalorie,zahl);	
			break;
			
		case JOptionPane.NO_OPTION : String eingabe2 = JOptionPane.showInputDialog("Geben Sie den Wert in Kalorien an!");
			double zahl = Double.parseDouble(eingabe2);
		
				
					double joule=kinj(zahl);
					ausgabe2(joule,zahl);
			
			}
 

lukas93

Mitglied
Java:
switch (i) {
     case 1: //QUELLCODE
                break;
     case 2: //QUELLCODE
                break;
}

so in etwa sollte dein switch-case funktionieren
Das break; ist wichtig, weil sonst bei i=1 die fälle 1 und alle folgenden bis zum nächsten break durchlaufen werden


hoppla, das passiert wenn man nicht richtig liest, sry
Lukas
 
Zuletzt bearbeitet:

Simon100

Mitglied
Kann ich den alles in eine switch und case bedingung schreiben ??

Oder muss ich das auch zwei mal machen ??


und wie soll ich das schreiben das bei negativen zahlen eine meldung kommt ?

würde ja das mit default machen aber wie sage ich dem programm alle negativen zahlen ?
 

HimBromBeere

Top Contributor
Schreib doch VOR deinen Switch die Überprüfung, ob die Zahl positiv ist, dann musst du das nicht in jedem der beiden Fälle machen...

dann musst du in deinem Switch nur noch die jeweilige Funktion aufrufen
 

HimBromBeere

Top Contributor
Können schon, ist nur die Frage, das notwendig ist... (außerdem sieht´s doof aus, das s-Wort darf ich ja nicht mehr sagen;()

EDIT: Aber in die gleiche Switch wird´s auf keinen Fall gehen, du brauchst hin wie her zwei Fallunterscheidungen..
 

Simon100

Mitglied
So ein wunder ist geschehen ich habe das jetzt endlich mit switch und case hinbekommen.

Aber wo setze ich nur das abfragen der negativen zahl hin ? hatte es für dem switch mit if versucht aber der konnte nichts mit der variablen a anfangen. Hatte geschrieben:

Java:
if (a<0) JOptionPane.showMessageDialog(null, "Bitte geben Sie nur positive Zahlen ein!", "Warning", JOptionPane.WARNING_MESSAGE);



So sieht es jetzt normal aus.

Java:
	switch (i)
		{
		case JOptionPane.YES_OPTION :		String eingabe1 = JOptionPane.showInputDialog("Bitte geben Sie einen Wert in Joule ein.");
											double a = Double.parseDouble(eingabe1);
										
											double kalorie=jink(a);
						                    ausgabe1(kalorie,a);
											break;
					
		case JOptionPane.NO_OPTION :		String eingabe2 = JOptionPane.showInputDialog("Bitte geben Sie einen Wert in Cal ein.");
											double b = Double.parseDouble(eingabe2);		

											double joule=kinj(b);
						                    ausgabe2(joule,b);
											break;
											
					
											
											
				}
 

HimBromBeere

Top Contributor
Stimmt, war ein Denkfehler meinerseits, das vorherige Prüfen geht natürlich nicht. In diesem Fall muss es (so hässlich das auch aussieht) wohl IN den Switch mit rein. Zu allem Übel müsstest du ja auch noch eine Schleife einbauen, die so lange läuft, bis der gute Nutzer auch endlich eine positive Zahl eingibt (auf andere Zeichen außer Ziffern musst du auch noch achten, in dem Fall sollte .parseDouble() eine entsrechende Exception werfen. Sieht dann wirklich eklig aus, aber wat mut, dat mut
 

Andi_CH

Top Contributor
Na ja - üblicherweise kapselt man das in eine Methode, weil es ja immer dasselbe ist und was nicht gleich ist, wird per Parameter übergeben ....

Nicht nur wer mehrmals denselben Fehler macht ist blöd, sondern auch wer denselben Code mehrmals schreibt :D

(Nicht böse sein - es überkam mich gerade. Zu viel Frust vor dem Wochenende schädigt den Charakter)
 

Neue Themen


Oben