Umrechner

Servus,

es geht um folgende Aufgabe:

Im Download-Bereich des fi nden Sie die Datei preise.txt, welche zeilenweise den Produktnamen
und dessen Preis beinhalten.

a) Schreiben Sie ein Programm namens Umrechner.java, das diese Datei übergeben bekommt
und die Preise in Dollar umrechnet. Verwenden Sie hierfür die festen Angaben:
1 Euro = 1,24 US-Dollar
Ihre Ausgabe soll den Produktnamen gefolgt von den Preisangaben in US-Dollar enthalten.
Diese Preise sollen auf 2 Nachkommastellen aufgerundet werden, d.h. aus $14.2235623
sollen $14.23 werden.

b) Da Ingwer in Amerika keinen reienden Absatz fi ndet, wird dieses Produkt dort erst gar
nicht verkauft. Ändern Sie Ihr Programm daher so ab, dass die entsprechende Zeile beim
Einlesen des Produktnamens Ingwer nicht weiter bearbeitet und somit auch nicht in die
umgerechnete Datei gespeichert wird. Gleiches gilt für das Produkt, welches nach dem
Umrechnen (und Aufrunden) einen Preis von $1:18 hat. Auch dieses soll nicht in die
umgerechnete Datei gespeichert werden.

Ich hab Probleme bei der Aufgabe b), die a) hab ich soweit geschafft. Trotzdem hab ich die a) mitgepost, weil ich glaube, sie ist zum Verständnis der Aufgabe notwendig.

Hier mein Quellcode:

Java:
import IOulm.*;

public class Umrechner{
public static void main (String[] args) {
double Preis = 0.00;
double Dollarpreis = 0.00;
String Produktname = "";
String P = "";
int Zeile = 0;

while ( Zeile < 23) {
  if  (Urc.readWord()) {
         Produktname = Urc.getWord();
		 }
		 else {
         System.out.println("Konnte nicht einlesen.");
	 System.exit(1);
      }

	  if (Produktname == "Ingwer") {
	  "Ingwer" = P;
	  }


if (Urc.readDouble()) { 
         Preis = Urc.getDouble();
      } 
	   
	  else {
         System.out.println("Konnte nicht einlesen.");
	 System.exit(2);
      }
	  
	
	  Dollarpreis = (java.lang.Math.round((Preis * 1.24) *100) /100.);
	  System.out.println (Produktname+ " " + Dollarpreis);
	  Zeile = Zeile + 1;
	  
	  }
	  
	  
	  }
	  }

Es erscheinen folgende Fehlermeldungen:
Umrechner.java:21: unexpected type
required: variable
found : value
"Ingwer" = P;
^
1 error

Die Datei preise.txt sieht übrigens umgerechnet so aus:
Wassermelone 4.71
Birne 0.93
Champignon 3.15
Granatapfel 2.07
Ingwer 3.67
Johannisbeere 1.9
Karotte 1.04
Limette 1.5
Maracuja 2.93
Nektarine 1.4
Orange 1.22
Paprika 1.05
Dattel 5.22
Erdbeeren 3.71
Apfel 1.38
Quitte 2.03
Radieschen 1.18
Spargel 4.77
Traube 4.23
Ugli 3.56
Yam 3.14
Zitrone 2.02
Himbeere 3.34
 
G

Gast2

Gast
1) Strings per equals vergleichen
2)
Code:
"Ingwer" = P;
=>
Code:
P = "Ingwer";
, Du kannst einem String nichts zuweisen, nur Variablen.
3) Variablen sollte man klein schreiben.
 

LukHaimb27

Mitglied
Also, wenn "Ingwer" in der Variable P steht, wird es nicht mehr bearbeitet?

zuweisen geht andersrum (
Code:
P = "Ingwer";
)
 
Da würde ich ja sowas nehmen

Java:
if(produktname.equals("Ingwer"))
  continue;

Danke hat soweit geklappt. Hab jetzt noch ein:

Java:
if(Produktname.equals("Radieschen"))
		continue;

eingefügt, damit die Zeile mit 1.18$ nicht beachtet wird. Ich glaube, dass ist allerdings nicht ganz Sinn der Sache. Wenn ich es allerdings mit

Java:
if(Dollarpreis == 1.18)
		continue;

klappts nicht.
 

X5-599

Top Contributor
Ich meine mich zu erinnern, dass Vergleiche mit Double etc immer problematisch sind. Was meinst du mit "Sinn der Sache"? Den Preis zu identifizieren der nach der Umrechnung 1.18$ ergibt? Wenn ja, dann hast du recht. Das müsste anders gemacht werden. Denn die ausgelesenen Preise sind doch die Euro Preise die dann umgerechnet werden müssen, oder?

Nochwas: Was ist denn das für ein komisches Runden im Beispiel?
aus $14.2235623 sollen $14.23 werden

Nach meiner Rechnung ist der einzige Artikel der nach dem Umrechnen in die Nähe von 1.18$ kommt: Die Birne mit 1.15$ (0.93€)...
 

flopalko

Bekanntes Mitglied
Du kannst doubles nicht einfach so vergleichen. Ich würde es so machen:
Java:
if(abs(1.18-Dollarpreis) < 0.01)
     continue
 
Danke für die Hilfe, hier übrigens die Lösung:

Java:
import IOulm.*;

public class Umrechner{
   public static void main(String[] args) {
      final double KURS = 1.24;
      final double SCHRANKE = 1E-12;

      while (Urc.readWord()) {
	 String name = Urc.getWord();
         double preis, price;

	 //Preis einlesen
	 if (!Urc.readDouble()) {
	    System.err.println("Preis fehlt");
	    System.exit(1);
	 }
	 preis = Urc.getDouble();
         price = preis * KURS;
	 price = (Math.ceil(price * 100)) / 100;

         /*Ausgeben, wenn Produkt nicht Ingwer und
	   Vergleich auf Gleichheit fehlschlägt*/
         if (!name.equals("Ingwer") &&
	    !(Math.abs(price - 1.18) < SCHRANKE)) {
	    System.out.println(name + " $" + price);
	 }
      }
   }
}
 

Neue Themen


Oben