此为历史版本和 IPFS 入口查阅区,回到作品页
MartinYeung
IPFS 指纹 这是什么

作品指纹

Java – Scanner 讀取整數(int)緊貼再輸入字串(String)的注意事項

MartinYeung
·
·

閱讀時間: 10分鐘

每當需要讀取使用者輸入或檔案內容中東西的時候,我們都會運用以下方式:

Scanner in = new Scanner(System.in);

不過要記得在使用前要import一個:

import java.util.Scanner

而我們都會用

nextInt()

讀取使用者輸入或檔案內容中的整數

nextLine()

讀取使用者輸入或檔案內容中的字串,包含空白鍵 tab等等。最後enter表示輸入完成

但如果我們先讀取字串再讀取整數,是不是用下面方式就可以?

String name=in.nextLine();
int number=in.nextInt();

答案: 是可以

但如果我們先讀取整數再讀取字串,是不是用下面方式就可以?

int number=in.nextInt();
String name=in.nextLine();

答案: 是不可以

為什麼是不可以?

假設我們要讀取

2020
HappyNewYear

因為當完成了in.nextInt(); 其實依然停留在第一行(2020的一行)

所以當你再執行

String name=in.nextLine();

它只會在同一行讀取字串

換角度看,in.nextInt();只是讀取整數,完成後不會自動跳到下一行。

但如果我們要讀取

2020
2021

修改一下程式

int number=in.nextInt();
int number2=in.nextInt();

當完成了in.nextInt(); 其實依然停留在第一行(2020的一行)

所以當你再執行in.nextInt();時就會跳到下一行。

因為第一行的所有整數已經被讀取。

所以就會去下一行讀取整數

解決讀取整數(int)緊貼再輸入字串(String)的方法:

假設我們要讀取

2020
HappyNewYear

修改一下程式

int number=in.nextInt();
in.nextLine();
String name=in.nextLine();

第一行讀取整數(int) (第一行2020)

第二行讀取一條空白Line (第一行2020的Line)

第三行讀取字串(String) (第二行HappyNewYear)


CC BY-NC-ND 2.0 授权