亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

有關于input.next()和input.nextLine()的問題

package?com.imooc;
import?java.util.Scanner;

public?class?Bus?extends?Traffic?{
	
	Scanner?input?=?new?Scanner(System.in);
	public?void?method(){
		System.out.print("請輸入運載人數:");
		int?num1?=?input.nextInt();
		System.out.print("請輸入運載方式:");
		String?way1?=?input.next();
		
		System.out.println("巴士在"+way1+"運輸"+num1+"人");
	}

}

我在課后練習中嘗試使用Scanner輸入數據來獲取不同交通工具的運輸方式和運輸人數,然后發現在輸入字符串的過程中


如果使用

System.out.print("請輸入運載方式:");
String?way1?=?input.nextLine();

就會跳過運載方式的輸入,結果如下:

請輸入運載人數:40
請輸入運載方式:巴士在運輸40人


如果使用

System.out.print("請輸入運載方式:");
String?way1?=?input.next();

才會正確的得到我想要的結果:

請輸入運載人數:40
請輸入運載方式:陸地上
巴士在陸地上運輸40人


請問這是為什么?

正在回答

2 回答

next()一定要讀取到有效字符后才可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字符之后,next()方法才將其后輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結束符。簡單地說,next()查找并返回來自此掃描器的下一個完整標記。完整標記的前后是與分隔模式匹配的輸入信息,所以next方法不能得到帶空格的字符串

而nextLine()方法的結束符只是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字符,它是可以得到帶空格的字符串的。

意思就是說,nextInt()讀到有效值后就結束,輸完數字后按的回車符還存在,nextLine()讀取到回車符就直接結束,所以結果就類似于跳過了該條輸入語句

0 回復 有任何疑惑可以回復我~
#1

涅米 提問者

原來如此0.0 非常感謝
2017-03-05 回復 有任何疑惑可以回復我~

nextLine???與nextInt不能同時使用

假設你第一次輸入一個:40 空格 陸地上,回車
那么nextInt讀到的便是40此時并沒有換行,你在way1那里用nextLine讀到的便是 空格陸地上 的值,
此時你輸入的那一行信息才讀完,下一個nextline才會讓你重新輸入值

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

有關于input.next()和input.nextLine()的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號