Java interpretiert Zahl falsch

Status
Nicht offen für weitere Antworten.

pcplanet

Mitglied
Sers Leute...Ich will einen Automat schreiben. Das klappt soweit ganz gut! Nur wenn ich das Programm laufen lassen, dann kommt wenn ich Geld 1 eingebe immer 100cent! jedes mal!! Bei 2 interpretiert er es als 10 cent, bei 3 als 20cent. Bei 1 macht er aber immer 100cent draus. Woran kann das liegen?

Java:
import java.io.*;
class Fahrkartenautomat
{
	public static void main (String[] args) throws IOException
	{
		
		Reader reader=new InputStreamReader(System.in);
		BufferedReader input = new BufferedReader(reader);
		int tarif=0;
		while (tarif > 3 || tarif <= 0)
		{
			tarif=Eingabe.readInt(input, "Tarif","Wählen Sie einen Tarif: 1=Tarif 1; 2=Tarif 2; 3=Tarif 3");		// Tarifwahl
		}
		int geldspeicher = 0;
		int geld = 0;
		
		if (tarif == 1)
			{
			int preis = 150;
			int betrag = 150;			
			System.out.println("Werfen sie 1,50 Euro ein.");
   
			while (geldspeicher < preis)
				{
				betrag = preis - geldspeicher;
				System.out.println ("Bitte werfen Sie noch "+betrag+" Cent(s) ein.");
				geld=Eingabezwei.readInt(input, "Cent","1 ergibt 5cent, 2 10cent..etc.");
				if (geld == 1)
				geld = 5;
				if (geld == 2)
				geld = 10;
				if (geld == 3)
				geld = 20;
				if (geld == 4)
				geld = 50;
				if (geld == 5)
				geld = 100;
				if (geld == 6)
				geld = 200;
				if (geld == 7)
				geld = 500;
				if (geld == 8)
				geld = 1000;
				if (geld == 9)
				geld = 2000;
				geldspeicher = geldspeicher + geld;
				
				
					if (geldspeicher == preis)
					{
					System.out.println ("Ihr Ticket wird gedruckt. Vielen Dank");
					break;
					}
					if (geldspeicher >= preis)
					{
					betrag = geldspeicher - preis;
					System.out.println ("Ihr Ticket wird gedruckt. Sie bekommen "+betrag+" zurück");
					break;
					}
				System.out.println ("Bitte geben Sie mehr Geld ein");	
				}		
			}
 
S

Spacerat

Gast
...äh genau...
Wieso hälst du die Beträge nicht in einem int-Array und benutzt die Eingabe als Index?
Java:
int[] betraege = {1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000};
geld = betraege[geld];
 

pcplanet

Mitglied
@Model: Leuchtet mir ein... iwie muss ich dass umschreiben

@Space: Keine Ahnung was du meinst... ich bin noch relativ neu. So wies programm jetzt läuft ist das schon richtig...
 

hdi

Top Contributor
Was Spacerat meint ist, dass es einfacher und übersichtlicher ist, wenn du ein Array benutzt, in dem du die einzelnen Werte speicherst. Google java Array wenn du nicht weisst was das ist.

Btw:
Java:
geld = betraege[geld-1];
wäre es dann in deinem Code.
 

pcplanet

Mitglied
danke hdi!

Was ich gern noch machen würde:

Der Automat soll sich merken, was für Münzen ich eingeworfen habe: Also ich werfe 50cent ein und dann 20cent. Jetzt will ich abbrechen und will genau dieses Geld wieder...

Mit welcher Überlegung stelle ich das geschickt an. Wie gesagt, einfache java Befehle,.... ich bin noch relativ frisch.
 
S

Spacerat

Gast
Btw:
Java:
geld = betraege[geld-1];
wäre es dann in deinem Code.
:oops: Danke...
Mit welcher Überlegung stelle ich das geschickt an. Wie gesagt, einfache java Befehle,.... ich bin noch relativ frisch.
Mit 'ner Collection würd' ich sagen. Z.B.:
Java:
List<Integer> rueck = new ArrayList<Integer>();
rueck.add(geld); // nach jeder Eingabe und Wandlung in den Betrag.
Beim Abbruch kann man sich dann die Beträge ausgeben lassen:
Java:
for(Integer i : rueck) {
  System.out.println(i + "ct.");
}
 
Zuletzt bearbeitet von einem Moderator:

pcplanet

Mitglied
Also das ist mein Java Code aktuell:

Zu Spacerat: Ich muss mich erstmal in deine Befehle reinarbeiten :D

Ich werde mir das mal angucken, wie und wo ich deine Befehle gut einfügen könnte...

Java:
import java.io.*;
class Fahrkartenautomat
{
	public static void main (String[] args) throws IOException
	{
		
		Reader reader=new InputStreamReader(System.in);
		BufferedReader input = new BufferedReader(reader);
		int tarif=0;
		while (tarif > 3 || tarif <= 0)
		{
			tarif=Eingabe.readInt(input, "Tarif","Wählen Sie einen Tarif: 1=Tarif 1; 2=Tarif 2; 3=Tarif 3");		// Tarifwahl
		}
		int geldspeicher = 0;
		int geld = 0;

		
		if (tarif == 1)
			{
			int preis = 150;
			int betrag = 150;			
			System.out.println("Werfen sie 1,50 Euro ein.");
			int[] betraege = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000};
			while (geldspeicher < preis)
				{
				
				betrag = preis - geldspeicher;
				System.out.println ("Bitte werfen Sie noch "+betrag+" Cent(s) ein.");
				geld=Eingabe.readInt(input, "Cent","1 ergibt 5cent, 2 10cent..etc.");
				geld = betraege[geld-1];
				geldspeicher = geldspeicher + geld;
				
					if (geldspeicher == preis)
					{
					System.out.println ("Ihr Ticket wird gedruckt. Vielen Dank");
					break;
					}
					if (geldspeicher >= preis)
					{
					betrag = geldspeicher - preis;
					System.out.println ("Ihr Ticket wird gedruckt. Sie bekommen "+betrag+" zurück");
					break;
					}
				System.out.println ("Werfen Sie noch mehr Geld ein");				
				}		
			}	
	    if (tarif == 2)
			{
			int preis = 250;
			int betrag = 250;
			int eingabe = 0;
			System.out.println("Werfen sie 2,50 Euro ein.");
 			int[] betraege = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000};
			while (geldspeicher < preis)
				{
				
				betrag = preis - geldspeicher;
				System.out.println ("Bitte werfen Sie noch "+betrag+" Cent(s) ein.");
				geld=Eingabe.readInt(input, "Cent","1 ergibt 5cent, 2 10cent..etc.");
				geld = betraege[geld-1];
				geldspeicher = geldspeicher + geld;
				
					if (geldspeicher == preis)
					{
					System.out.println ("Ihr Ticket wird gedruckt. Vielen Dank");
					break;
					}
					if (geldspeicher >= preis)
					{
					betrag = geldspeicher - preis;
					System.out.println ("Ihr Ticket wird gedruckt. Sie bekommen "+betrag+" zurück");
					break;
					}
				System.out.println ("Werfen Sie noch mehr Geld ein");				
				}		
			}	
		else if (tarif == 3)
			System.out.println("Werfen sie 5,00 Euro ein.");

	}
}
 
S

Spacerat

Gast
Zu Spacerat: Ich muss mich erstmal in deine Befehle reinarbeiten :D
Hast du ein Glück, dass das hier nicht die Bundeswehr ist, sondern nur ein Javaforum. Ich ziehe deswegen auch den Begriff Anweisung vor, aber frag' mich nicht nach dem Unterschied:D.
Zu deinem Code:
Das sieht ja schon recht manierlich aus. Meine Idee mit dem Array sehe ich umgesetzt, ist also verstanden. Schön.
Schöner wäre es allerdings, wenn man das Array, einmal für alle, vor der ganzen Tarifabfrage macht:[JAVA=17] int[] betraege = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000};
if(tarif == 1) {
...[/code]Die Zeilen 23 und 53 können (müssen) dann entfallen. Aber eines nach dem anderen.
 

pcplanet

Mitglied
Noch eine Frage.. aber was zu boolean:

Das ist ein Ausschnitt meines Programms. Wie kann ich es machen, dass er bei dem untersten if, dass Programm neustartet bzw. beendet.

[Java]
boolean eingabeAufforderungzwei = true;

while (eingabeAufforderungzwei)
{
eingabeAufforderungzwei = false;
eingabe=Eingabezwei.readInt(input, "Cent","1 ergibt 5cent, 2 10cent..etc.");

if(eingabe > 9){
System.out.println("Sie haben was falsch gemacht. Bitte geben Sie erneut eine Zahl ein");
eingabeAufforderungzwei = true;
}

if (eingabe <= 0){
System.out.println("Sie haben das Programm beendet! Der Karlsruher Verkehrsverbund wünscht Ihnen noch einen schönen Tag");
eingabeAufforderungzwei = ??? ;
}
}
[/code]
ich will, dass er das Programm beendet....also statt den ??? was...?
 

hdi

Top Contributor
ich will, dass er das Programm beendet....also statt den ??? was...?
Java:
System.exit(0);

edit: Also natürlich kannst du das nicht einem boolean zuweisen. Vllt versteh ich nicht was du grad versuchst zu tun.. Auf jeden Fall beendet obiger Code sofort das komplette Programm.
 

pcplanet

Mitglied
hdi ;)) hilft dir immer? ;))

Mein Automat soll 1-9 lesen könenn. 1 sind 5ct... 5 sind 10ct.. etc

Mehr als 20€ akzeptiert er nicht. Also startert er die while Schleife neu. Das wäre 10 und größer.

Bei 0 folgt ein Automatischer Abbruch des Programms.


eingabeAufforderungzwei = System.exit(0) ;

dann?
 

hdi

Top Contributor
hdi hilft dir immer?
Du bist schon der zweite, der das sagt :D Aber ne, das hat damit nix zu tun ;)

Erstmal die Zuweisung geht nicht, wie ich schon sagte (im edit). System.exit(0) ist eine Anweisung (Methoden-Aufruf), die keinen Rückgabewert hat. Also kannst du das auch nicht irgendwie in eine Variable speichern. Das beendet die JVM, das heißt dein Java-Programm. Meinst du was anderes mit "Programm", kann das sein?
 

pcplanet

Mitglied
Ich würde gern den Programmcodee ganz posten. K.A. ob es Kammeraden von mir entdecken... deswegen bin ich vorsichtig.

Ich will erreichen, dass bei der Eingabe 0 das Programm wieder ganz zum anfang zurückgeht.....zur Tarifwahl in dem Fall (siehe en bissel weiter oben)
 

hdi

Top Contributor
Java:
tarifwahl:
   while(...){
        ....
        while(eingabeaufforderungZwei){
            ...
            else if(eingabe == 0){
                continue tarifwahl;
            }
         }
    }

edit: Das sind Label Statements, sollte man aber nur in letzter Instanz nutzen. So wie du deinen Code verschachtelt hast, macht es hier durchaus sinn mit Labels zu arbeiten, statt 9 booleans zu setzen oder sowas ;)
 
Zuletzt bearbeitet:

hdi

Top Contributor
Java:
public static void main(String[] args) {
		meinLabel: for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5; j++) {
				System.out.println(i + "," + j);
				if (i == 2 && j == 2) {
					System.out.println("continue at label (next iteration)");
					continue meinLabel;
				}
			}
		}

	}

kA seit welcher Java Version es das gibt. Was nutzt du denn für ne JDK?
 
S

Spacerat

Gast
Labels gibt es afaik von Anfang an. Sie müssen afaik stets am Zeilenanfang stehen.
@Edit: OK... Das mit dem Zeilenanfang war ein Irrtum.
 
Zuletzt bearbeitet von einem Moderator:

pcplanet

Mitglied
@hdi:

Merci trotzdem. Aber ich glaube es ist nicht anwendbar auf mein Programm, da hier zu viele while und if ineinander laufen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Java nicht interpretiert Java Basics - Anfänger-Themen 6
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben