Java-Mehrfachscanner
Ich habe eine Klasse, die mehrere erstelltInteger
Objekte und legt sie in einLinkedList
Wie nachfolgend dargestellt:
public class Shares<E> implements Queue<E> {
protected LinkedList<E> L;
public Shares() {
L = new LinkedList<E>();
}
public boolean add(E price) {
System.out.println("How many of these shares would you like?");
Scanner scanInt;
scanInt = new Scanner(System.in);
Integer noShares = scanInt.nextInt();
for (int i = 0; i < noShares; i++) {
L.addLast(price);
}
scanInt.close();
return true;
}
}
Ich habe eine Anwendung, die über die Konsole nach der Eingabe "add" sucht und, wenn sie gefunden wird, die Methode aufruftadd
Wie nachfolgend dargestellt:
public class Application {
private static Scanner scan;
public static <E> void main(String[] args) {
Queue<Integer> S = new Shares<Integer>();
scan = new Scanner(System.in);
System.out.println("Please type add");
String sentence = scan.nextLine();
while (sentence.equals("quit") == false) {
if (sentence.equals("add")) {
System.out
.println("What price would you like to buy your shares at?");
S.add((Integer) scan.nextInt());
} else
System.exit(0);
sentence = scan.nextLine();
}
}
}
Die Anwendung sollte es dem Benutzer ermöglichen, so oft wie gewünscht "add" einzugeben, aber der Fehler "no line found" erscheint nach demadd
Methode wurde aufgerufen.
Ich vermute, das liegt daran, dassScanner
wurde in der Methode nicht geschlossen und bei Bedarf wieder geöffnet. Ist das das, was mit dem Programm nicht stimmt und wenn ja, wie würde ich vorgehen, um es zu reparieren?
Bitte beachten Sie, dass dieses Programm noch nicht abgeschlossen ist, da ich eine Verkaufsmethode hinzufügen werde, die diese Anteile verkauft. Deshalb benutze ich eine while-Schleife.