![](/img/trans.png)
[英]How to use the value of a string that is yet to be set by scanner/system.in - Java
[英]How to use multiple Scanner objects on System.in?
在我的程序中使用多個Scanner對象的正確方法是什么。 例如,我使用掃描儀來讀取文件,然后根據文件中的內容,我再次使用掃描儀來提示用戶輸入。 顯示了我的代碼的摘錄
....
Scanner f = new Scanner (System.in); //get the file name
String fileName = f.next();
Scanner input = new Scanner( new File( fileName ) );
while ( input.hasNext() )
{
String currentLine = input.nextLine();
if ( some pattern found) {
Scanner getUserInput = new Scanner (System.in);
String userInput = getUserInput.next();
.....
}
}
....
它似乎不起作用。 我需要使用userInput.close()
嗎? 我究竟做錯了什么。 ?
我不明白的是,第一個System.in
只是獲取文件名。 之后,為什么它會干擾第二個System.in
。 至於input
對象,它從File而不是System.in
讀取。
我究竟做錯了什么?
在同一個流上使用多個掃描程序是潛在的問題。 掃描儀可以(並且將會)消耗流 - 這可能(將)導致意外的副作用。 最好不要這樣做。
如果輸入已關閉,則輸入(但字符串沒有close
方法)對所有人都是關閉的 - 這對任何人來說都不是很有趣。
編輯:關於多個掃描程序錯誤原因的“詳細信息”: 不要在InputStream上創建多個緩沖包裝器
...任何緩沖的包裝都是不安全的; 如果使用掃描儀代替,這種情況也可以利用......
另請參閱Java代碼問題...掃描程序相關? 這也談到了一些方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.