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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage