使用掃描儀,您可以使用input.nextInt()
代替int
或input.nextDouble()
代替double
。Java掃描儀輸入字符串
爲什麼使用input.nextLine()
代替String
而不是input.nextString()
?
使用掃描儀,您可以使用input.nextInt()
代替int
或input.nextDouble()
代替double
。Java掃描儀輸入字符串
爲什麼使用input.nextLine()
代替String
而不是input.nextString()
?
的最接近nextString()
是next()
,它返回下一令牌,在默認情況下是下一個「字」(這是通過設置分隔符控制,即默認爲空白)。
nextLine()
返回當前行(其餘部分)(最多但不包括新行char),,而不管分隔符。這就是爲什麼它被稱爲線不字符串,因爲「線」最準確地描述它做什麼,而不是什麼類型,它返回它不會從next()
啊我現在明白了,謝謝! –
掃描儀類接受輸入並嘗試將其轉換爲提及的數據類型。 如果您已經編寫nextDouble
,那麼它會嘗試將數據轉換爲Double數據類型。如果轉換失敗,則會引發錯誤。
在nextLine的情況下,它會佔用完整的下一行並將其轉換爲字符串,因爲字符串可以是n個字符。 this is a test message
是一個字符串值。
字符串數據可以包含空格,而任何其他數據類型不會。
對於nextLine(),掃描器將匹配LINE_PATTERN = ".*(\r\n|[\n\r
])|.+$"
正則表達式的字符串。
對於nextDouble()或其他任何傳遞無效輸入的方法,它將拋出java.util.InputMismatchException
類型的異常。
謝謝我認爲我現在明白了,但是如果line是一個數據類型,爲什麼它可以用作輸入行中的String之後的值?另外,爲什麼不說線而不是線,因爲它會是一個字符串? –
我想,因爲一個字符串可以保持新行分隔符太 – Thrasher
所以一行是在一個字符串?而int或double等其他內部沒有其他內容,所以這就是爲什麼你只是使用Int,Double等? –
命名約定使程序易於閱讀,使程序更容易理解。他們還可以提供有關 標識符功能的信息,例如,它是常量,包或類,這有助於理解代碼。
此方法返回的當前行的其餘部分,不包括在端任何在線分離器。該位置設置爲下一行的開頭。所以:
爲什麼你會把它稱爲nextString()如果這個方法返回一行?
謝謝,所以它返回的不是一個字符串? –
區分自己在其他的答案加起來,所有的本地類型已經固定大小以字節(即byte
是1,char
和short
是2,和long
是double
8,...),所以很容易對Scanner
讀取只是字節的量,並返回相應的結果。
現在,有多少個字節是String
?如果是C,那麼它將是「,直到找到一個空字符」,但是在Java字符串中的空字符是合法的,因此您無法知道在哪裏停止閱讀。這就是爲什麼沒有nextString()
方法。
相反,您可以任意決定在特定字符處結束字符串,並且該字符最終成爲換行\r\n
組合。該方法的正確名稱是nextLine()
。
因爲整行是一個字符串?然後你可以把它稱爲一條線... – Li357
我認爲你可能會感到困惑,因爲它佔用了整行(包括空格),最後不包括任何行分隔符。 – Thrasher
是的,我很困惑哈哈,剛開始嘗試學習java。我只詢問整行String line = input.nextLine()中的具體(Line)。 –