Hallo!
Ich habe eine Schulaufgabe bekommen und habe die auch recht zufriedenstellen gelöst (dachte ich zumindest). Der Compiler gibt keine Fehlermeldung mehr aus, aber der Interpreter macht etwas völlig falsch. Hier einmal der Quelltext:
Es scheint alles zu funktionieren, bis auf dass der Interpreter einmal ausgibt, ich hätte eine ungültige Eingabe getätigt, obwohl ich immer mit J oder N geantwortet habe.
Ausserdem meint er, alle Preise würden bei 0,00 Euro liegen.
Wenn ich den Code folgendermaßen verändere (also ohne das mit der Überprüfung, wenn der Benutzer etwas ausser J oder N eingegeben hat und ohne Fehlermeldung):
...dann funktioniert´s. Also ne Fehlermeldung kann er ja nicht mehr ausgeben von wegen ungültige Angabe. Und die richtigen Preise zeigt er dann auch an.
Ich stehe jetzt mal so richtig auf dem Schlauch, wär nett wenn ihr mir helfen könntet.
Gruß
Ich habe eine Schulaufgabe bekommen und habe die auch recht zufriedenstellen gelöst (dachte ich zumindest). Der Compiler gibt keine Fehlermeldung mehr aus, aber der Interpreter macht etwas völlig falsch. Hier einmal der Quelltext:
Java:
import java.io.*;
public class Bummelexpress
{
public static void main (String args[]) throws java.io.IOException
{
//Deklaration der Variablen
double iAnzahl, iEntfernung, iFahrpreis, iMWSt, iGesFahrpreis, iBrutto;
String sSchnellexpress, sPlatzreservierung, sNachtfahrt;
//Start des Programms
System.out.println("Willkommen beim Assistenten für die Fahrpreisberechnung!");
//Wertzuweisung
Double iNetto = 0.00;
//Eingabe der Fahrgastanzahl
System.out.println("Bitte geben sie die Anzahl der Fahrgäste ein.");
BufferedReader input = new BufferedReader (
new InputStreamReader(System.in));
iAnzahl = Integer.parseInt(input.readLine());
//Eingabe der Entfernung
System.out.println("Bitte geben sie die Entfernung in Kilometer an.");
BufferedReader input2 = new BufferedReader (
new InputStreamReader(System.in));
iEntfernung = Integer.parseInt(input2.readLine());
//Eingabe: Schnellexpress? Ja oder Nein (J/N)
System.out.println("Soll der Schnellexpress benutzt werden? Hinweis: Eingabe Ja oder Nein mit J oder N.");
BufferedReader input3 = new BufferedReader (
new InputStreamReader(System.in));
sSchnellexpress = input3.readLine();
//Eingabe: Platzreservierung? Ja oder Nein (J/N)
System.out.println("Soll die Platzreservierung gewählt werden? Hinweis: Eingabe Ja oder Nein mit J oder N.");
BufferedReader input4 = new BufferedReader (
new InputStreamReader(System.in));
sPlatzreservierung = input4.readLine();
//Eingabe: Nachtfahrt? Ja oder Nein (J/N)
System.out.println("Wird die Fahrt eine Nachtfahrt sein? Hinweis: Eingabe Ja oder Nein mit J oder N.");
BufferedReader input5 = new BufferedReader (
new InputStreamReader(System.in));
sNachtfahrt = input5.readLine();
//Überprüfung der Entfernung
if (iEntfernung<100)
iFahrpreis=0.25;
else
if (iEntfernung<= 500)
iFahrpreis=0.20;
else
iFahrpreis=0.15;
//Brechnung Preis mal Entfernung (Weil Preis gilt ja nur pro km, darum muss preis mal km gerechnet werden)
iGesFahrpreis=iFahrpreis*iEntfernung;
//Überprüfung der Frage: Schnellexpress?
if (sSchnellexpress == "J")
iGesFahrpreis=iGesFahrpreis+5.00;
else
if ((sSchnellexpress != "N") || (sSchnellexpress != "J"))
System.out.println("Ungültige Eingabe, bitte widerholen sie den Versuch mit einer gültigen Eingabe (in diesem Fall bitte J oder N für Ja bzw. Nein)");
else
//Überprüfung der Frage: Platzreservierung?
if (sPlatzreservierung == "J")
iGesFahrpreis=iGesFahrpreis+3.50;
else
if ((sPlatzreservierung != "N") || (sPlatzreservierung != "J"))
System.out.println("Ungültige Eingabe, bitte widerholen sie den Versuch mit einer gültigen Eingabe (in diesem Fall bitte J oder N für Ja bzw. Nein)");
else
//Überpreüfung der Frage: Nachtfahrt?
if (sNachtfahrt == "J")
iGesFahrpreis=iGesFahrpreis*0.85;
else
if ((sNachtfahrt != "N") || (sNachtfahrt != "J"))
System.out.println("Ungültige Eingabe, bitte widerholen sie den Versuch mit einer gültigen Eingabe (in diesem Fall bitte J oder N für Ja bzw. Nein)");
else
//Berechnungen
//Berechnung des Nettopreises
iNetto=iGesFahrpreis*iAnzahl;
//Berechnung der Mehrwertsteuer
iMWSt=iNetto*0.19;
//Berechnung des Bruttopreises
iBrutto=iNetto+iMWSt;
//Ausgabe
//Ausgabe des Nettopreises
System.out.println("Der Nettofharpreis beträgt "+iNetto+" Euro");
//Ausgabe der Mehwertsteuer
System.out.println("Die Mehwertsteuer (19%) beträgt "+iMWSt+" Euro");
//Ausgabe des Bruttopreises (Gesamtpreises)
System.out.println("Der Bruttopreis (tatsächlicher Gesamtpreis) beträgt "+iBrutto+" Euro");
//Programmende
System.out.println("Vielen Dank dass sie diesen Assistenten für die Fahrpreisberechnung benutzt haben!");
}
}
Es scheint alles zu funktionieren, bis auf dass der Interpreter einmal ausgibt, ich hätte eine ungültige Eingabe getätigt, obwohl ich immer mit J oder N geantwortet habe.
Ausserdem meint er, alle Preise würden bei 0,00 Euro liegen.
Wenn ich den Code folgendermaßen verändere (also ohne das mit der Überprüfung, wenn der Benutzer etwas ausser J oder N eingegeben hat und ohne Fehlermeldung):
Java:
import java.io.*;
public class Bummelexpress
{
public static void main (String args[]) throws java.io.IOException
{
//Deklaration der Variablen
double iAnzahl, iEntfernung, iFahrpreis, iMWSt, iGesFahrpreis, iBrutto;
String sSchnellexpress, sPlatzreservierung, sNachtfahrt;
//Start des Programms
System.out.println("Willkommen beim Assistenten für die Fahrpreisberechnung!");
//Wertzuweisung
Double iNetto = 0.00;
//Eingabe der Fahrgastanzahl
System.out.println("Bitte geben sie die Anzahl der Fahrgäste ein.");
BufferedReader input = new BufferedReader (
new InputStreamReader(System.in));
iAnzahl = Integer.parseInt(input.readLine());
//Eingabe der Entfernung
System.out.println("Bitte geben sie die Entfernung in Kilometer an.");
BufferedReader input2 = new BufferedReader (
new InputStreamReader(System.in));
iEntfernung = Integer.parseInt(input2.readLine());
//Eingabe: Schnellexpress? Ja oder Nein (J/N)
System.out.println("Soll der Schnellexpress benutzt werden? Hinweis: Eingabe Ja oder Nein mit J oder N.");
BufferedReader input3 = new BufferedReader (
new InputStreamReader(System.in));
sSchnellexpress = input3.readLine();
//Eingabe: Platzreservierung? Ja oder Nein (J/N)
System.out.println("Soll die Platzreservierung gewählt werden? Hinweis: Eingabe Ja oder Nein mit J oder N.");
BufferedReader input4 = new BufferedReader (
new InputStreamReader(System.in));
sPlatzreservierung = input4.readLine();
//Eingabe: Nachtfahrt? Ja oder Nein (J/N)
System.out.println("Wird die Fahrt eine Nachtfahrt sein? Hinweis: Eingabe Ja oder Nein mit J oder N.");
BufferedReader input5 = new BufferedReader (
new InputStreamReader(System.in));
sNachtfahrt = input5.readLine();
//Überprüfung der Entfernung
if (iEntfernung<100)
iFahrpreis=0.25;
else
if (iEntfernung<= 500)
iFahrpreis=0.20;
else
iFahrpreis=0.15;
//Brechnung Preis mal Entfernung (Weil Preis gilt ja nur pro km, darum muss preis mal km gerechnet werden)
iGesFahrpreis=iFahrpreis*iEntfernung;
//Überprüfung der Frage: Schnellexpress?
if (sSchnellexpress == "J")
iGesFahrpreis=iGesFahrpreis+5.00;
else
//Überprüfung der Frage: Platzreservierung?
if (sPlatzreservierung == "J")
iGesFahrpreis=iGesFahrpreis+3.50;
else
//Überpreüfung der Frage: Nachtfahrt?
if (sNachtfahrt == "J")
iGesFahrpreis=iGesFahrpreis*0.85;
else
//Berechnungen
//Berechnung des Nettopreises
iNetto=iGesFahrpreis*iAnzahl;
//Berechnung der Mehrwertsteuer
iMWSt=iNetto*0.19;
//Berechnung des Bruttopreises
iBrutto=iNetto+iMWSt;
//Ausgabe
//Ausgabe des Nettopreises
System.out.println("Der Nettofharpreis beträgt "+iNetto+" Euro");
//Ausgabe der Mehwertsteuer
System.out.println("Die Mehwertsteuer (19%) beträgt "+iMWSt+" Euro");
//Ausgabe des Bruttopreises (Gesamtpreises)
System.out.println("Der Bruttopreis (tatsächlicher Gesamtpreis) beträgt "+iBrutto+" Euro");
//Programmende
System.out.println("Vielen Dank dass sie diesen Assistenten für die Fahrpreisberechnung benutzt haben!");
}
}
...dann funktioniert´s. Also ne Fehlermeldung kann er ja nicht mehr ausgeben von wegen ungültige Angabe. Und die richtigen Preise zeigt er dann auch an.
Ich stehe jetzt mal so richtig auf dem Schlauch, wär nett wenn ihr mir helfen könntet.
Gruß
Anhänge
Zuletzt bearbeitet von einem Moderator: