[Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

niggom

Komplett-PC-Käufer(in)
[Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Hallo Leute,
Seit Anfang des Schuljahres befassen wir uns in Informatik mit Java.
Nun war die Aufgabe einen Währungsrechner mit Euro, Dollar und Yen zu programmieren.
Da ich leider mit dem Programm nicht weiterkomme bräuchte ich Eure Hilfe.
Schaut euch doch bitte mal den Quellcode an und gebt mir mal ne Rückmeldung ob das völliger Stuss ist oder ob man damit halbwegs was anfangen könnte:

import java.util.Scanner;
import java.io.IOException;

public class Währungsrechner
{ public static void main(String args[])
{ double Ek, Betrag, Ausgabewert;
System.out.println ("Bitte für Eingabe von Euro 1, für Dollar 2 und für Yen 3 eingeben :");
int zahl;
zahl=Integer.valueOf(args[0]).intValue();

//Eingabe Währung

switch(zahl)
{
case 1://Euro
Scanner Eingabe = new Scanner (System.in);
Betrag = Eingabe.nextDouble ();

//Eingabe Endwährung
System.out.println ("Bitte für Ausgabe in Euro 1, für Dollar 2 und für Yen 3 eingeben :");
int zahl1;
zahl1=Integer.valueOf(args[0]).intValue();


switch(zahl)
{
case 1://Euro
Ausgabewert = Betrag * 1;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

case 2://Dollar
Ausgabewert = Betrag * 1.31;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

case 3://Yen
Ausgabewert = Betrag * 107.212 ;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

}


break;

case 2://Dollar
Scanner Eingabe2 = new Scanner (System.in);
Betrag = Eingabe2.nextDouble ();

//Eingabe Endwährung
System.out.println ("Bitte für Ausgabe in Euro 1, für Dollar 2 und für Yen 3 eingeben :");
int zahl2;
zahl2=Integer.valueOf(args[0]).intValue();


switch(zahl)
{
case 1://Euro
Ausgabewert = Betrag * 0.763489;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

case 2://Dollar
Ausgabewert = Betrag * 1;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

case 3://Yen
Ausgabewert = Betrag * 81.8643 ;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

}

break;

case 3://Yen
Scanner Eingabe3 = new Scanner (System.in);
Betrag = Eingabe3.nextDouble ();

//Eingabe Endwährung
System.out.println ("Bitte für Ausgabe in Euro 1, für Dollar 2 und für Yen 3 eingeben :");
int zahl3;
zahl3=Integer.valueOf(args[0]).intValue();


switch(zahl)
{
case 1://Euro
Ausgabewert = Betrag * 0.00932548 ;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

case 2://Dollar
Ausgabewert = Betrag * 1;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

case 3://Yen
Ausgabewert = Betrag * 0.0122148;
System.out.println ("Ausgabewert :" + Ausgabewert);
break;

}

break;

}


}
}




Falls jemand da durchblickt würde ich mich über Hilfe sehr freuen.
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Hmmm, Habt ihr schon nen Währungsrechner oder sowas ähnliches geschrieben?
Ich denke der Fehler liegt in Zeile neun, das hat mir auch mein Kumpel bestätigt, der informatikstudent ist.
Er konnte den Fehler leider auch nicht finden :P
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

du solltest diese code-tags nutzen:
Code:
import java.util.Scanner;
import java.io.IOException;

public class Währungsrechner
{   public static void main(String args[])
  { double Ek, Betrag, Ausgabewert;
    System.out.println ("Bitte für Eingabe von Euro 1, für Dollar 2 und für Yen 3 eingeben :");
    int zahl;
    zahl=Integer.valueOf(args[0]).intValue();
    
    //Eingabe Währung
    
    switch(zahl)
    {
      case 1://Euro
      Scanner  Eingabe = new Scanner (System.in);
      Betrag = Eingabe.nextDouble ();
      
      //Eingabe Endwährung
      System.out.println ("Bitte für Ausgabe in Euro 1, für Dollar 2 und für Yen 3 eingeben :");
      int zahl1;
      zahl1=Integer.valueOf(args[0]).intValue();
      
      
      switch(zahl)
      {
        case 1://Euro
        Ausgabewert = Betrag * 1;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 2://Dollar
        Ausgabewert = Betrag * 1.31;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 3://Yen
        Ausgabewert = Betrag * 107.212 ;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
      } 
      
      
      break;
      
      case 2://Dollar
      Scanner  Eingabe2 = new Scanner (System.in);
      Betrag = Eingabe2.nextDouble ();
      
      //Eingabe Endwährung
      System.out.println ("Bitte für Ausgabe in Euro 1, für Dollar 2 und für Yen 3 eingeben :");
      int zahl2;
      zahl2=Integer.valueOf(args[0]).intValue();
      
      
      switch(zahl)
      {
        case 1://Euro
        Ausgabewert = Betrag * 0.763489;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 2://Dollar
        Ausgabewert = Betrag * 1;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 3://Yen
        Ausgabewert = Betrag * 81.8643  ;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
      } 
      
      break;
      
      case 3://Yen
      Scanner  Eingabe3 = new Scanner (System.in);
      Betrag = Eingabe3.nextDouble ();
      
      //Eingabe Endwährung
      System.out.println ("Bitte für Ausgabe in Euro 1, für Dollar 2 und für Yen 3 eingeben :");
      int zahl3;
      zahl3=Integer.valueOf(args[0]).intValue();
      
      
      switch(zahl)
      {
        case 1://Euro
        Ausgabewert = Betrag * 0.00932548 ;              
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 2://Dollar
        Ausgabewert = Betrag * 1;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 3://Yen
        Ausgabewert = Betrag * 0.0122148;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
      } 
      
      break;
      
    }
    
    
  } 
}
das liest sich dann besser ^^

gut, fangen wir mal an. du startest das programm und übergibst als startparameter die zahl, die über die währung entscheidet. dann kommt ein string, der dich zur zahleneingabe auffordert ^^ leicht unstimmig oder? :P aber is ja erstma kein programmfehler, nur irgendwie komisch halt ^^ ich hätte als "bestätigung" dann wohl eher ausgegeben, in welchem "modus" das ding nu läuft. also sowas in der art: "Gib einen Euro-Betrag ein: " (oder eben dollar/yen).

gut, nu geht er in die erste switch-anweisung. ich hab jetz scho länger nix mehr mit java gemacht, aber mMn muss man das Case-zeugs in nen Block einschließen - sonst gilt nur der erste befehl. und nach dem ersten befehl würde er das nächste case, nen default oder garnix mehr (switch ende) erwarten. bei dir kommt dann aber die textausgabe ^^ -> error. is das der fehler, den er wirft?

wenn ja: dann einfach mal das ganze, was zum case gehört, in nen block {} packen.
Code:
switch(argument) {
  case wert1: {
    anweisung1();
    anweisung2();
  }
}
da fällt mir noch ein 2. fehler auf. copy&paste hates me too :P schau mal, nach was du im "inneren" switch-case block schaltest ^^
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Erzähl doch mal was das Problem ist! :) Fehlemeldungen und so und wenn du schon dabei bist, nutze doch bitte den Code-Viewer für deinen Quell Code. Bsp:
Code:
 quellcode
Bitte auch in Code-Snippets auf eine ordentliche, lesbare Struktur achten.

Ich sehe da persönlich keine Probleme, ich sehe nur zum ersten Mal mehrere ineinander geschachtelte switche/cases. :D
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Ich habe mal im Tutorium nebenbi meinen eigenen kleinen Währungsrechner gebastelt und dabei kam das raus: (Das Programm läuft in Schleife solange man will)

Code:
import java.util.Scanner;

public class Währungsrechner {
    
    public static void main(String[] args) {
        do {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Bitte geben Sie die Zahl ein, welche Währungstausch Sie durchführen wollen.\n1:Euro zu Yen\n2:Euro zu Dollar\n3:Yen zu Euro\n4:Yen zu Dollar\n5:Dollar zu Euro\n6:Dollar zu Yen");
        double einheit = eingabe.nextDouble();
        int währung = (int) einheit;
        if ((währung != 1)&&(währung != 2)&&(währung != 3)&&(währung != 4)&&(währung != 5)&&(währung != 6)) {
            System.out.println("Unzulässige Eingabe!");
        } else {
        Scanner wert = new Scanner(System.in);
        System.out.println("Nun geben Sie bitte an wieviel Sie umtauschen wollen:");
        double geld = wert.nextDouble();
        
        switch (währung) {
        case 1:
            System.out.println(geld + " Euro sind " + geld*107.2 + " Yen.");
            break;
        case 2:
            System.out.println(geld + " Euro sind " + geld*1.3 + " Dollar.");
            break;
        case 3:
            System.out.println(geld + " Yen sind " + geld*0.009 + " Euro.");
            break;
        case 4:
            System.out.println(geld + " Yen sind " + geld*0.012 + " Dollar.");
            break;
        case 5:
            System.out.println(geld + " Dollar sind " + geld*0.7 + " Euro.");
            break;
        case 6:
            System.out.println(geld + " Dollar sind " + geld*82.3 + " Yen.");
            break;
        }
        }
        Scanner ende = new Scanner(System.in);
        System.out.println("Möchten Sie das Programm beenden? Y-Ja/N-Nein");
        char endlauf;
        endlauf=ende.next().charAt(0);
        if (endlauf == 'Y') {
         break;
        }
        } while (true);
        }

}

EDIT:

Ich habe auch dieses Semester mit Java aber mit Eclipse angefangen. Wir hatten als erste Hausaufgabe einen Längenumrechner machen müssen.
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Ok, danke schon mal für die schnelle Hilfe, hab jetzt in der Schule mal weitergearbeitet an dem Programm und nochmal einiges verändert, so funktionierts schon ziemlich gut :D
Hier nochmal der Verbesserte Quellcode
Code:
import java.util.Scanner;
import java.io.IOException;

public class Währungsrechner01
{   public static void main(String args[])
  { double Ek, Betrag, Ausgabewert;
    System.out.println ("Bitte für Startwährung eingeben: \n 1 für Euro \n 2 für Dollar \n 3 für Yen  ");
    int zahl;
    //zahl=Integer.valueOf(args[0]).intValue();
    
    //Eingabe Währung
    Scanner Eingabe = new Scanner (System.in);
    zahl = Eingabe.nextInt ();
    switch(zahl)
    {
      case 1://Euro
      System.out.println ("Bitte Betrag eingeben :");
      Scanner  Eingabe1 = new Scanner (System.in);
      Betrag = Eingabe.nextDouble ();
      
      //Eingabe Endwährung
      System.out.println ("Bitte für Ausgabewährung eingeben: \n 1 Euro \n 2 Dollar \n 3 Yen");
      int zahl1;
      //zahl1=Integer.valueOf(args[0]).intValue();
      Scanner Eingabe11= new Scanner (System.in);
      zahl1 = Eingabe.nextInt ();
      
      switch(zahl1)
      {
        case 1://Euro
        Ausgabewert = Betrag * 1;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 2://Dollar
        Ausgabewert = Betrag * 1.31;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 3://Yen
        Ausgabewert = Betrag * 107.212 ;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
      } 
      
      
      break;
      
      case 2://Dollar
      System.out.println ("Bitte Betrag eingeben :");
      Scanner  Eingabe2 = new Scanner (System.in);
      Betrag = Eingabe2.nextDouble ();
      
      //Eingabe Endwährung
      System.out.println ("Bitte für Ausgabewährung eingeben: \n 1 Euro \n 2 Dollar \n 3 Yen");
      int zahl22;
      //zahl2=Integer.valueOf(args[0]).intValue();
      
      Scanner Eingabe22= new Scanner (System.in);
      zahl22 = Eingabe.nextInt ();
      
      switch(zahl22)
      {
        case 1://Euro
        Ausgabewert = Betrag * 0.763489;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 2://Dollar
        Ausgabewert = Betrag * 1;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 3://Yen
        Ausgabewert = Betrag * 81.8643  ;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
      } 
      
      break;
      
      case 3://Yen
      System.out.println ("Bitte Betrag eingeben :");
      Scanner  Eingabe3 = new Scanner (System.in);
      Betrag = Eingabe3.nextDouble ();
      
      //Eingabe Endwährung
      System.out.println ("Bitte für Ausgabewährung eingeben: \n 1 Euro \n 2 Dollar \n 3 Yen");
      int zahl33;
      //zahl3=Integer.valueOf(args[0]).intValue();
      
      Scanner Eingabe33= new Scanner (System.in);
      zahl33 = Eingabe.nextInt ();
      
      switch(zahl33)
      {
        case 1://Euro
        Ausgabewert = Betrag * 0.00932548 ;              
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 2://Dollar
        Ausgabewert = Betrag * 1;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
        case 3://Yen
        Ausgabewert = Betrag * 0.0122148;
        System.out.println ("Ausgabewert :" + Ausgabewert);
        break;
        
      } 
      
      break;
      
    }
    
    
  } 
}

So, funktioniert jetzt :hail:

Hab bloß statt Zeile 9 nen Scanner eingefügt und es ein bisschen übersichtlicher gemacht :D
Der Lehrer hat das Programm zwar nicht verstanden, aber jetzt da es funktioniert muss er das ja auch nicht :P


@wincenty: Tolles Programm, aber wenn man nach der Frage ob man beenden möcht ja eingibt läuft es trotzdem weiter :ugly:
Sry, hab grad gesehn, dass man ein großes Y eingeben muss :P
:wall: Mein Fehler
 
Zuletzt bearbeitet:
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Danke :D Ich werds mal ausprobieren, muss aber heute noch Geschichte lernen :kotz:
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Ich habe jetzt mal basierend auf der Logik von niggom mich auch mal dran gemacht. Da ich eher auf komplexere Strukturen stehe, schaut euch mal meine Lösung an :)

Bin für konstruktive Kritik offen!

Code:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class CurrencyCalcTest {	
	public static class Currency {
		private String label;
		private Map<Currency, Double> conversions = new HashMap<Currency, Double>();
		
		public Currency(String label) {
			this.label = label;
		}
		
		public Currency addConversion(Currency currency, double rate) {
			conversions.put(currency, rate);
			return this;
		}
		
		public double convert(Currency to, double amount) {
			return this != to && conversions.containsKey(to) 
					? amount * conversions.get(to) : amount;
		}
		
		public List<Currency> getConversions() {
			List<Currency> l = new ArrayList<Currency>();
			for (Currency c : conversions.keySet()) l.add(c);
			return l;
		}
		
		@Override
		public String toString() {
			return label;
		}
	}
	
	public static <T> T readTerminal(List<T> types, Scanner reader, String label) {
		int len = types.size();
		
		System.out.println(label);
		for (int i = 0; i < len; i++) {
			System.out.println((i + 1) + " für " + types.get(i));
		}
		
		int choice = -1;
		while (0 >= choice || choice > len + 1) {
			System.out.print("Eingabe: ");
			choice = reader.nextInt();
		}
		
		return types.get(choice - 1);
	}
	
	public static void main(String args[]) {
		List<Currency> currencies = new ArrayList<Currency>();
		
		Currency euro = new Currency("Euro");
		Currency dollar = new Currency("Dollar");
		Currency yen = new Currency("Yen");
		
		currencies.add(euro);
		currencies.add(dollar);
		currencies.add(yen);
		
		euro.addConversion(dollar, 1.31).addConversion(yen, 107.212);
		dollar.addConversion(euro, 0.763489).addConversion(yen, 81.8643);
		yen.addConversion(euro, 0.00932548).addConversion(dollar, 1);
		
		Scanner reader = new Scanner(System.in);
		boolean running = true;
		Currency from, to;
		double amount;
		
		while (running) {
			from = readTerminal(currencies, reader, "Bitte für Startwährung eingeben");
			to = readTerminal(from.getConversions(), reader, "Bitte für Ausgabewährung eingeben");
			System.out.print("Betrag eingeben: ");
			amount = reader.nextDouble();

			System.out.println("\nAusgabewert: " + from.convert(to, amount) + "\n");
			
			System.out.println("Erneut Abfragen? (Y/N)");
			running = reader.next().equals("Y");
			System.out.println("\n\n");
		}
	}
}
 
Zuletzt bearbeitet:
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Hey, wäre es nicht einfacher ein 2-dimensionales Array zu erstellen? Ich weiß zwar nicht wie weit du bist mit Java, aber das ist nicht allzu kompliziert.
bei dir würde das dann so angesetzt werden:

Code:
double[][] faktor = new double[3][3];
faktor[0][0] = 1.2;
faktor[0][1] = 0.9;
faktor[0][2] = 1.5;
faktor[1][0] = 1.3;
...
die linke Zahl steht dann quasi für die Währung, die vorliegt, und die Rechte für die Währung, in die Umgerechnet wird. In dieses Array kannste dann alle Umrechnungsfaktoren speichern und musst einfach nur fragen, von welcher Währung in Welche welcher Betrag umgerechnet werden muss. Dann den Betrag einfach mit dem Inhalt des Arrays an der jeweiligen Stelle multiplizieren und fertig^^

lg
 
AW: [Java] Bräuchte Hilfe für bei einem Währungsrechner (für Schule)

Java scheint ja sehr oft in der Schule als Stoff drangenommen zu werden ... und das ist alles so schön einfach.
 
Zurück