Sie verwenden nicht dieselbe Scanner
wie in Ihrem Fragetitel angegeben. Sie erstellen zwei verschiedene und unabhängige Instanzen von Scanner
.
sc
in Ihrem Code ist eine Scanner-Referenz. Zunächst verweist es auf das erste Objekt Scanner
. Dann ändern Sie die Objektreferenz so, dass sie auf das zweite Objekt Scanner
zeigt. Sie verwenden die Scanner
Objekte nicht erneut, Sie verwenden die Objektreferenz erneut. Das ist vollkommen in Ordnung.
Wenn ein Objekt Scanner
erstellt wird, kann die vom Scanner verwendete Quelle nicht geändert werden. Wenn Daten aus einer anderen Quelle abgerufen werden sollen, muss eine neue Instanz erstellt werden.
In Ihrem Codebeispiel ist Ihr Ansatz, zwei verschiedene Scanner für System.in
und eine Datei zu verwenden, gut. Das Problem in Ihrem Beispiel ist jedoch, dass Sie den falschen Konstruktor für die Datei Scanner verwenden. Um einen Scanner mit der Datei als Quelle zu erstellen, benötigen Sie einen File
oder Path
Objekt zu erstellen und dieses Objekt als Konstruktor-Parameter verwenden anstelle des Dateinamens String:
new Scanner(new File(filename));
Oder:
new Scanner(Paths.get(filename));
Ja , Sie können. Warum hast du es nicht versucht? – xenteros
einfach 'if' verwenden, wenn Übereinstimmung gefunden wird, Scanner neu initialisieren –
@PavneetSingh er hat einen Arbeitscode. Falls Dateiname der Pfad zu der Datei mit der Erweiterung ist, wird es funktionieren – xenteros