Input/Output Scanner Eingaben auf Console farbig darstellen, wie?

The_Virus

Mitglied
Hallo,
Ich bin Wirtschafts-Informatik Student im 1. Semester und muss eine Übung schreiben, die ich soweit auch fertig habe. Doch eine Kleinigkeit fehlt:
  • Die Eingaben auf der Console, die per Scanner eingelesen werden, sollen farbig dargestellt werden.
Hier die Aufgabe: Prog I

Hier mein Programm:
Java:
package paketGeldautomat;
import java.util.Scanner;

public class Geldautomat {
	private String weiter;
	private String euro_cent;
	private float betrag;
	private int[] muenz = new int[8];
	private String[] muenz2 = new String[8];
	
	public void einzahlen() {
		Scanner einlesen = new Scanner(System.in);
		System.out.println("Wollen Sie den Betrag in Euro oder Cent eingeben? (e / c)");
		euro_cent = einlesen.next();
		
		if(euro_cent.equals("e")) {
			System.out.println("Bitte geben Sie einen Betrag in Euro ein!");
			betrag = einlesen.nextFloat();
			System.out.printf("\n------Ihr Geldbetrag = %,2.2f €------\n", betrag);
			betrag *= 100;
		}
		if(euro_cent.equals("c")) {
			System.out.println("Bitte geben Sie einen Betrag in Cent ein!");
			betrag = einlesen.nextFloat();
			System.out.printf("\n------Ihr Geldbetrag = %,2.2f €------\n", (betrag/100));
		}
		
	}
	public float getBetrag() {
		return betrag;
	}
	public void umrechnen() {
		while(betrag >= 200) {
			muenz[0] += 1;
			betrag -= 200;
		}
		while(betrag >= 100) {
			muenz[1] += 1;
			betrag -= 100;
		}
		while(betrag >= 50) {
			muenz[2] += 1;
			betrag -= 50;
		}
		while(betrag >= 20) {
			muenz[3] += 1;
			betrag -= 20;
		}
		while(betrag >= 10) {
			muenz[4] += 1;
			betrag -= 10;
		}
		while(betrag >= 5) {
			muenz[5] += 1;
			betrag -= 5;
		}
		while(betrag >= 2) {
			muenz[6] += 1;
			betrag -= 2;
		}	
		while(betrag >= 1) {
			muenz[7] += 1;
			betrag -= 1;
		}
	}
	public void stringArrayFuellen() {
		muenz2[0] = "2,00 €";
		muenz2[1] = "1,00 €";
		muenz2[2] = "  50 cent";
		muenz2[3] = "  20 cent";
		muenz2[4] = "  10 cent";
		muenz2[5] = "   5 cent";
		muenz2[6] = "   2 cent";
		muenz2[7] = "   1 cent";
	}
	public void ausgabe() {
		System.out.println("----------Muenz-Ausgabe:----------");
		for(int i = 0; i < muenz.length; i++) {
			System.out.printf("%4d Muenze(n) zu %s \n", muenz[i], muenz2[i]);
		}
	}
	
	public void weiterRechnen() {
		Scanner einlesen = new Scanner(System.in);
		System.out.print("\nweiter rechnen? (j / n)");
		weiter = einlesen.next();
		
		System.out.println();		
		if(weiter.equals("n")) {
			System.out.println("Schönen Tag noch! :-)");
		}
	}
	public String getWeiter() {
		return weiter;
	}
}
-----------------------------------------------------------------------------------------------
package paketGeldautomat;

public class GeldautomatStart {
	public static void main(String[] args) {
		
		Geldautomat automat = new Geldautomat();
		do{
			automat.einzahlen();
			if(automat.getBetrag() == 0) {
				System.out.println("Ohne Moos nix los! ;-)"); break;
			} 
			automat.umrechnen();
			automat.stringArrayFuellen();
			automat.ausgabe();
			automat.weiterRechnen();
		} while( automat.getWeiter().equals("j") );
	}
}
Und bitte keine allzu komplizierten Lösungen. Es soll so einfach wie möglich sein.
 
G

Gast2

Gast
So trivial ist das nicht bestimmte Textstellen in der Windows Konsole farblich zu machen. Da wirst du um JNI/JNA und dlls wohl nicht drum rum kommen.

Ich verstehe das aber auch eher so, dass mit der grünen farbe die Benutzereingaben auf dem blatt gekennzeichnet sind, damit du weißt was der benutzer einzugeben hat.
Also
Code:
7,46 €
und
Code:
j
 

faetzminator

Gesperrter Benutzer
Die Übung sagt gar nicht, dass dies farblich hervorgehoben sein sollte. Sie sagt nur, dass im angegebenen Beispiel dies der Fall ist.
Einfach gesagt: es geht gar nicht. Das ist Sache der Konsole / cmd / Shell / Bash / ..., wie sie das erledigt. Z.B. die Bash kennt AFAIK gewisse ASCII Codes, welche bei der Ausgabe als "Farbcodes" erkannt und dementsprechend umgesetzt werden. Ich hab in der cmd noch nie was farbiges gesehen!?
 
S

SlaterB

Gast
ja genau,
"Die Eingaben auf der Console, die per Scanner eingelesen werden, sollen farbig dargestellt werden."
steht da überhaupt nicht, sondern es wird allein über die Darstellung des Aufgabentextes selber gesprochen!

"Beispiel für einen Programmlauf (Benutzereingaben sind farblich hervorgehoben): "
sind != sollen werden, wie kommst du auf diese Transformation?
 

The_Virus

Mitglied
@faetzminator / SlaterB:
Ihr habt Recht! :lol:
Unsere Professorin hat die Benutzereingaben in der Aufgabe nur farblich hervorgehoben, damit wir das besser erkennen. Danke!

Aber noch eine andere Frage:
Wenn ich bei dem Programm z.B. "6,89€" eingebe, kriege ich einen Fehler. Wenn ich aber nur "6,89" oder "6,89 €" eingebe, läuft das Programm normal durch.
Was muss ich hinzufügen, damit das "€"-Zeichen beim Einlesen wieder entfernt wird? So das es nicht in die Varibale "betrag" geschrieben wird.
 

chalkbag

Bekanntes Mitglied
Wert als String einlesen und eben nicht über nextFloat().

Und ich empfehle die lustigen Sprüche sowie Smilies zu entfernen (im Code..).

[edit] ich bin so verdammt schnell heute, zu langsam...
 

The_Virus

Mitglied
Danke, das mit dem String hab ich mir schon gedacht...
Die Smilies hab ich ich entfernt, die Sprüche lass ich drin. Die haben eine Funktion, sie zeigen an, wann das Programm abgebrochen wird. Denn das soll es im Fall von "0" und wenn man weiterRechnen mit "n" beantwortet.
 

jgh

Top Contributor
du kannst auch es mit einem try/catch - Block versuchen und beim catchen der Exception, dann einfach wieder die gleiche Methode nochmals aufrufen.
Da du schon vorher nachgefragt hast, ob die Eingabe € oder Cent sein soll...hat sie meiner Meinung beim Betrag nichts zu suchen.
Außerdem würde ich die
Code:
equalsIgnoreCase("e")
Methode benutzen, da dann zumindest ein großes "E" auch als Euro erkannt wird.

[java=16] if (euro_cent.equalsIgnoreCase("e")) {
System.out.println("Bitte geben Sie einen Betrag in Euro ein!");
try {
betrag = einlesen.nextFloat();
} catch (Exception e) {
System.out
.println("Hier halt irgendeine Fehlermeldung, oder was auch immer...");
einzahlen();
}
System.out.printf("\n------Ihr Geldbetrag = %,2.2f €------\n",
betrag);
betrag *= 100;
}[/code]
 

The_Virus

Mitglied
Ich hab das jetzt mit String einlesen und Double.parseDouble(String) probiert, doch er gibt mir immer nen Fehler. "Empty String"

Java:
package paketGeldautomat;

import java.util.Scanner;

public class Geldautomat {
	
	private String weiter;
	private String euro_cent;
	private String betragString = "";
	private double betrag = 1;
	private int[] muenz = new int[8];
	private String[] muenz2 = new String[8];
	
	public void einzahlen() {
		Scanner einlesen = new Scanner(System.in);
		System.out.println("Wollen Sie den Betrag in Euro oder Cent eingeben? (e / c)");
		euro_cent = einlesen.next();
		
		if(euro_cent.equals("e")) {
			System.out.println("Bitte geben Sie einen Betrag in Euro ein!");
			betragString = einlesen.nextLine();
			betragString = betragString.replaceAll("€","").replaceAll("cent","");
			betrag = Double.parseDouble(betragString);
			System.out.printf("\n------Ihr Geldbetrag = %,2.2f €------\n", betrag);
			betrag *= 100;
		}
		if(euro_cent.equals("c")) {
			System.out.println("Bitte geben Sie einen Betrag in Cent ein!");
			betragString = einlesen.nextLine();
			betragString = betragString.replaceAll("€","").replaceAll("cent","");
			betrag = Double.parseDouble(betragString);
			System.out.printf("\n------Ihr Geldbetrag = %,2.2f €------\n", (betrag/100));
		}
		
	}
	public double getBetrag() {
		return betrag;
	}

	public void umrechnen() {
		while(betrag >= 200) {
			muenz[0] += 1;
			betrag -= 200;
		}
		while(betrag >= 100) {
			muenz[1] += 1;
			betrag -= 100;
		}
		while(betrag >= 50) {
			muenz[2] += 1;
			betrag -= 50;
		}
		while(betrag >= 20) {
			muenz[3] += 1;
			betrag -= 20;
		}
		while(betrag >= 10) {
			muenz[4] += 1;
			betrag -= 10;
		}
		while(betrag >= 5) {
			muenz[5] += 1;
			betrag -= 5;
		}
		while(betrag >= 2) {
			muenz[6] += 1;
			betrag -= 2;
		}	
		while(betrag >= 1) {
			muenz[7] += 1;
			betrag -= 1;
		}
	}
	
	public void stringArrayFuellen() {
		muenz2[0] = "2,00 €";
		muenz2[1] = "1,00 €";
		muenz2[2] = "  50 cent";
		muenz2[3] = "  20 cent";
		muenz2[4] = "  10 cent";
		muenz2[5] = "   5 cent";
		muenz2[6] = "   2 cent";
		muenz2[7] = "   1 cent";
	}
	
	public void ausgabe() {
		System.out.println("----------Muenz-Ausgabe:----------");
		for(int i = 0; i < muenz.length; i++) {
			System.out.printf("%4d Muenze(n) zu %s \n", muenz[i], muenz2[i]);
		}
	}
	
	public void weiterRechnen() {
		Scanner einlesen = new Scanner(System.in);
		System.out.print("\nweiter rechnen? (j / n)");
		weiter = einlesen.next();
		
		System.out.println();		
		if(weiter.equals("n")) {
			System.out.println("Schönen Tag noch!");
		}
	}
	public String getWeiter() {
		return weiter;
	}
}
Habe eigentlich nur einlesen() geändert und den Datentyp von "betrag" (float zu double). Main ist gleich...
 

jgh

Top Contributor
verwende anstatt:

[java=21]betragString = einlesen.nextLine();[/code]

wieder deine ursprüngliche Methode
[java=21]betragString= einlesen.next()[/code]

dann hast du das, was du wolltest. (wahrscheinlich)

Eingaben, die aber bspw nur aus Buchstaben bestehen, oder auch die (eigentlich) korrekte Eingabe von 22,43 führen aber zum Programmabsturz, da für ein double der Punkt als Trennzeichen vorgesehen ist.
Klar, kannst du natürlich weiterhin mit der [c]replaceAll()[/c] Methode, ein Komma in einen Punkt verwandeln...der o.g. try/catch -Mechanismus erscheint mir weiterhin in diesem Fall als sinnvoll.
 

The_Virus

Mitglied
Danke, mit next() klappt es sofort. :toll:

try / catch habe ich zwar schonmal gehört bzw. gesehen, aber offiziell hatten wir das halt noch nicht in der Vorlesung. Und ohne dein Bespiel hier, wüsste ich auch nicht, wie ich das selbst schreiben sollte. Daher verwende ich das lieber noch nicht...
 

The_Virus

Mitglied
Einfach um try / catch zu verstehen, habs ich es jetzt doch mal eingebaut. Funktioniert wirklich sehr elegant, nicht schelcht. Bin nur nicht sicher, ob ich das verwenden sollte...
 

jgh

Top Contributor
ist m.E. absolut legitim, auch Code-Fragmente zu benutzen...die man noch nicht kennengelernt hat.

und der try/catch Mechanismus wird dir früher, oder später eh begegnen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
R Scanner-Eingaben addieren Java Basics - Anfänger-Themen 5
M Scanner String Eingaben ignorieren Java Basics - Anfänger-Themen 4
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
M Scanner Input mit if überprüfen Java Basics - Anfänger-Themen 5
D Scanner Java Basics - Anfänger-Themen 2
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
H Scanner nextLine() bringt Dateipfad Java Basics - Anfänger-Themen 1
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
I Scanner Loop Java Basics - Anfänger-Themen 1
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
C Scanner und If-Anweisung in Kombi Java Basics - Anfänger-Themen 3
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
J Erste Schritte Scanner Java Basics - Anfänger-Themen 4
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
Poppigescorn Arrayliste Mittels Scanner erweitern Java Basics - Anfänger-Themen 6
Jan_x8 Timer/Scanner Java Basics - Anfänger-Themen 5
M Scanner Klasse Java Basics - Anfänger-Themen 4
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
H Quellcode Scanner Klasse Java Basics - Anfänger-Themen 2
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
J Scanner-Klasse Java Basics - Anfänger-Themen 2
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N Problem mit Scanner Java Basics - Anfänger-Themen 2
V Ersätze für Java-Scanner Java Basics - Anfänger-Themen 9
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
A Scanner-Error Java Basics - Anfänger-Themen 8
D Java Scanner Java Basics - Anfänger-Themen 9
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
ZH1896ZH Verstehe verschieden Scanner und hasNext() nicht ganz Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
I Scanner auf 10 Stellen begrenzt? Java Basics - Anfänger-Themen 5
B Barcode Scanner Java Basics - Anfänger-Themen 3
V Wie lasse ich die for-Schleife so oft laufen wie per Scanner angegeben? Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
S Scanner Java Basics - Anfänger-Themen 36
S Frage zu Scanner Java Basics - Anfänger-Themen 3
cpt.Tomato Scanner problem mit Passwort Login Java Basics - Anfänger-Themen 3
O Scanner Klasse Java Basics - Anfänger-Themen 8
M java.util.scanner Fehler Java Basics - Anfänger-Themen 5
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
W Eclipse Che Scanner Java Basics - Anfänger-Themen 8
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
X Erste Schritte Problem mit scanner Java Basics - Anfänger-Themen 2
A Scanner.useLocale(Locale.US); Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
I Scanner und Arrays Java Basics - Anfänger-Themen 2
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
Neoline Methoden Scanner Methode Java Basics - Anfänger-Themen 9
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
B Vom scanner in ein Arraylist Java Basics - Anfänger-Themen 7
L Scanner Ausgabe Java Basics - Anfänger-Themen 37
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
W Wie arbeite ich mit dem Typ Scanner? Java Basics - Anfänger-Themen 5
J Input/Output Scanner Input als etwas einsetzen Java Basics - Anfänger-Themen 3
R CMDTools Scanner Fehler Java Basics - Anfänger-Themen 10
D nextInt() nicht für Scanner definiert? Java Basics - Anfänger-Themen 2
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
F Scanner Problem Java Basics - Anfänger-Themen 8
T Variablen Array mit Scanner befüllen Java Basics - Anfänger-Themen 6
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
F Scanner - nextLine() gibt leeren String zurück Java Basics - Anfänger-Themen 2
T Problem mit Scanner. Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
J Erste Schritte Scanner negative zahl einlesen und verwenden. Java Basics - Anfänger-Themen 6
W Methoden Probleme mit der Scanner Methode Java Basics - Anfänger-Themen 2
Silvascus Scanner Problem Java Basics - Anfänger-Themen 5
W Erste Schritte import java.util.scanner funktioniert nicht Java Basics - Anfänger-Themen 2
TheMenox Error bei Scanner - woher? Java Basics - Anfänger-Themen 14
D Fehler bei String eingabe via Scanner Java Basics - Anfänger-Themen 6
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
O POI Apache sheet scanner Java Basics - Anfänger-Themen 1
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
F Array mit Scanner-Werten Java Basics - Anfänger-Themen 4
M Input/Output Scanner schließt nicht Java Basics - Anfänger-Themen 2
M Scanner class Java Basics - Anfänger-Themen 6
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
S Array mit "foreach"-Schleife und nextInt (aus Scanner) beschreiben Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
Q Scanner auf eine Zahl beschränken Java Basics - Anfänger-Themen 2
S Sonderzeichen '|' (u007C) mit Scanner einlesen Java Basics - Anfänger-Themen 1
T Scanner lässt sich nicht importieren Java Basics - Anfänger-Themen 1
R scanner in String funktioniert nicht Java Basics - Anfänger-Themen 1
P scanner ein Double einlesen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben