java中nextLine(),读取换行符的解决
一:問題描述
當輸入完第一值后,就未能輸入后來的字符串
package com.wyj.two;import java.util.Scanner;public class text {public static void main(String[] args) {Scanner in = new Scanner(System.in);int temp = in.nextInt();System.out.println(temp);String str = in.nextLine();System.out.println(str);} }二:問題解析
經(jīng)過從網(wǎng)上查詢資料,了解到Scanner是一個掃描器,它掃描數(shù)據(jù)都是去內(nèi)存中一塊緩沖區(qū)中進行掃描并讀入數(shù)據(jù)的,而我們在控制臺中輸入的數(shù)據(jù)也都是被先存入緩沖區(qū)中等待掃描器的掃描讀取。這個掃描器在掃描過程中判斷停止的依據(jù)就是“空白符”,空格、回車等都算作是空白符。
next()與nextLine()的區(qū)別
next()方法在讀取內(nèi)容時,會過濾掉有效字符前面的無效字符,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結(jié)束符,next()方法會自動將其過濾掉;只有在讀取到有效字符之后,next()方法才將其后的空格鍵、Tab鍵或Enter鍵等視為結(jié)束符;所以next()方法不能得到帶空格的字符串。
nextLine()方法字面上有掃描一整行的意思,它的結(jié)束符只能是Enter鍵,即nextLine()方法返回的是Enter鍵之前沒有被讀取的所有字符,它是可以得到帶空格的字符串的。
next()方法在掃描到空白符的時候會將前面的數(shù)據(jù)讀取走,但會丟下空白符“\r”在緩沖區(qū)中
nextLine()方法在掃描的時候會將掃描到的空白符一同清理掉
三:問題解決
1.可以在后面加一個 nextLine();專門讀取無效字符
2.或者就別用nextLine()輸入, 直接用next();
總結(jié)
以上是生活随笔為你收集整理的java中nextLine(),读取换行符的解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 早报:华为鸿蒙OS 4最新升级进展公布
- 下一篇: 柯达推出复古 Super 8 胶片摄影机