HonniCilest
Erfahrenes Mitglied
Java:
import java.util.Arrays;
import java.util.Scanner;
public class Shop {
public class Item {
private String name;
private double price;
public Item(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
@Override
public String toString() {
return name + " (" + price + "€/kg)";
}
}
private Item[] items;
public Shop() {
items = new Item[]{
new Item("Käse", 10.5),
new Item("Wurst", 15.5),
new Item("Butter", 8.0)
};
}
public Item[] getItems() {
return items;
}
public Item findItemByName(String name) {
return Arrays.stream(items)
.filter(item -> item.getName().equalsIgnoreCase(name))
.findAny()
.orElse(new Item("Nichts Verfügbares", 0.0));
}
public static void main(String[] args) {
Shop shop = new Shop();
Scanner in = new Scanner(System.in);
System.out.println("Angebot:");
for(Item item : shop.getItems()) {
System.out.println(item);
}
System.out.println();
System.out.println("Auswahl?:");
Item item = shop.findItemByName(in.nextLine());
System.out.println("Du möchtest kaufen:");
System.out.println(item);
}
}
Hierbei handelt es sich nur um einen Prototypen meines Problems um den Fehler darzustellen. Dieser Prototyp ist keine Darstellung meines eigentlichen Programms.
Problem: Sobald ich bei der Auswahl etwas mit Umlauten auswähle (Im obigen Beispiel 'Käse'), erhalte ich die Ausgabe "Nichts Verfügbares". 'Wurst' und 'Butter' hingegen funktionieren wie gewünscht.
Frage: Ist das ein Bug oder könnt ihr ein Generelles Problem in diesem Prototyp sehen? Der Fehler tritt auch mit dem Schleifen-Repräsentant des Streams auf. Vermutlich ist es ein Encoding-Problem, aber welches Encoding müsste ich dem Scanner dann mitteilen um eine korrekte Ausgabe zu erhalten? Ausgeführt mit Netbeans.