pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

關于Scanner對象的輸入結束標記問題

這篇文章主要介紹了關于Scanner對象的輸入結束標記問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Scanner對象的輸入結束標記

最近開始復習java了,自己不知道或者需要注意的地方自己做個筆記

package gt;?
import java.util.Scanner;?
/**
?* Created by Cronous on 2017/10/29.
?*/
public class day01 {
?
? ? public static void main(String[] args){
? ? ? ? System.out.print("請輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? while(s.hasNext()){
? ? ? ? ? ? System.out.println(s.next());
? ? ? ? }
? ? }
}

我們輸入 ”123 345 678“ 然后回車,發現控制臺打印 

123

345

678

我看了下scanner的api它是這么說的 :

Scanner 使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。

然后可以使用不同的 next 方法將得到的標記轉換為不同類型的值。

所以這里我們知道它默認是以空白匹配,所以我們輸入當中有空格,它會一次讀取,直到回車,但是你會發現我們最后一個數字后面并沒有空格,系統也將數據分割出來了,

可能到這里不知道我在說啥,看下個例子:

package gt;?
import java.util.Scanner;?
/**
?* Created by Cronous on 2017/10/29.
?*/
public class day01 {
?
? ? public static void main(String[] args){
? ? ? ? System.out.print("請輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? s.useDelimiter(" ");//這里我們將系統分隔符主動設置為 " "
? ? ? ? while(s.hasNext()){
? ? ? ? ? ? System.out.println(s.next());
? ? ? ? }
? ? }
}

在這里我們主動設置了一個分隔符 " " 然后上次一樣輸入數據,輸入完按回車鍵 控制臺效果如下:

123

345

這里我們會發現第三個數并沒有輸出,這是為什么? 我們發現我們輸入完最后一個數時直接按回車了并沒有輸入我們設定的分隔符 " "

所以第三個數并沒有被打印出來,我們這樣輸入 ”123 345 678 “再按回車就可以正常輸出三個值,保證最后還有一個空格即可

再看一個代碼(注意這里有個坑),我的需求是 獲取輸入值 ,當輸入值為 "quit"時我們結束輸入

package gt;?
import java.util.Scanner;?
/**
?* Created by Cronous on 2017/10/29.
?*/
public class day01 {
?
? ? public static void main(String[] args){
? ? ? ? System.out.print("請輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? while(s.hasNext()){
? ? ? ? ? ?if("quit".equals(s.next())){
? ? ? ? ? ? ? ?break;
? ? ? ? ? ?}else{
? ? ? ? ? ? ? ?System.out.println(s.next());
? ? ? ? ? ?}
? ? ? ? }
? ? }
}

這里我們輸入 ”123 345 quit“  回車確認,這里我們希望得到輸出為

123

345

可是我們的得到的輸出為

345

為什么只有”345“輸出?  這里我通過debug發現一個問題:因為當我們判斷是否等于 ”quit“值時我們調用 s.next() 已經獲取”123“了,后來打印的是再一次獲取的值,也就是獲取的下一個值 "345"了,所以最后出現了 只打印 ”345“的問題

下面給出正確代碼,我們只需要保證s.next()值統一就行

package gt;?
import java.util.Scanner;?
/**
?* Created by Cronous on 2017/10/29.
?*/
public class day01 {
?
? ? public static void main(String[] args){
? ? ? ? System.out.print("請輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? while(s.hasNext()){
? ? ? ? ? ?String a = s.next();//將s.next()賦值給變量a
? ? ? ? ? ?if("quit".equals(a)){
? ? ? ? ? ? ? ?break;
? ? ? ? ? ?}else{
? ? ? ? ? ? ? ?System.out.println(a);
? ? ? ? ? ?}
? ? ? ? }
? ? }
}

這樣即可解決,問題不大,但是需要注意一下。 

Scanner的輸入及理解

Scanner

  • new 新生的意思
  • System.out輸出
  • System.in 輸入

Scannery對象

基本語法:

Scanner s = new Scanner(System.in);

通過Scanner類的next(下一個)與nextline(下一行)方法獲取輸入的字符串,在讀取前我們一般需要使用hasNext()與hasNextline()判斷是否還有輸入的數據。 

package Scnner;
import java.util.Scanner;
public class Day01 {	
	public static void main(String[] args) {
		
		//創建一個掃描對象,用于接收鍵盤數據		
		Scanner scanner = new Scanner(System.in);	
		//接收用戶的輸入,并把它封裝scanner		
		System.out.println("使用next方式接收:");
		
		//判斷用戶有沒有輸出字符串
		if (scanner.hasNext()==true)	{
       //這里默認==true,不用謝也可以,但是還是建議寫
			String str = scanner.next();
			//使用next方式接收
			System.out.println("輸出的內容為:"+str);
		}
	}	
}
  • next()

一定要讀取到有效字符后才可以結束輸入。

對輸入有效字符之前遇到的空白,next()方法會自動將其去掉。

只有輸入有效字符后才將其后面輸入的空白作為分隔符或者借宿符。

next()不能得到帶有空格的字符串

  • nextLine()

以enter為結束符,也就是說nextLine()方法返回的輸入回車之前的所有字符。

可以獲得空白

package Scnner;
import java.util.Scanner;
public class Day02 {
	public static void main(String[] args) {
		//從鍵盤來接收數據
		Scanner scanner = new Scanner(System.in);
		System.out.println("使用nextLine方式接收:");
		
		//判斷是否還有輸入
		if (scanner.hasNextLine()){
			
			//等待用戶去輸入
			String str = scanner.nextLine();			
			System.out.println("輸出的內容:"+str);			
		}
		scanner.close();
	}
}

當然也可以不要if去判斷

if (scanner.hasNextLine())

package Scnner;
import java.util.Scanner;
public class Day03 {
?? ?public static void main(String[] args) {
?? ?Scanner scanner = new Scanner(System.in);?? ?
?? ??? ?System.out.println("請輸入數據:");
?? ??? ?String str = scanner.nextLine();
?? ??? ?System.out.println("輸出的內容:"+str);?? ?? ?
?? ??? ?scanner.close();? ?? ?
?? ?}

這樣也是可以的

Scanner輸入內容理解(重點)

我個人是這樣理解的

輸入輸出我們只要記住3行代碼就行

System.out.println("請輸入數據:");
?? ??? ?String str = scanner.nextLine();
?? ??? ?System.out.println("輸出的內容:"+str);

第一行代碼是標題

請輸入數據:

第二行代碼: 是我們鍵盤所輸出的所有內容,知道你按下回車鍵(enter)之后,把所有內容變成一個變量保存再str里面

第三行代碼:則是等待第二行代碼運行完成后,將輸出內容+str(你鍵盤敲下的所有字符,也就是內容) 一起顯示出來

如下圖

在這里插入圖片描述

第一行為第一行代碼

第二行hello world 為第二行代碼,也就是你鍵盤敲下的內容

第三行則是等待第二行代碼運行完成后,輸出的內衣+鍵盤敲下的所有字符一起顯示出來

注意

//凡是IO流的類如果不關閉會一直占用資源,要養成好習慣用完就關掉
?? ??? ?scanner.close();
?? ??? ?//IO流 輸入輸出流

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持html5模板網。 

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 自动配料系统_称重配料控制系统厂家 | 首页 - 军军小站|张军博客| 扬州汇丰仪表有限公司| 雪花制冰机(实验室雪花制冰机)百科| 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 红外光谱仪维修_二手红外光谱仪_红外压片机_红外附件-天津博精仪器 | 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 浙江寺庙设计-杭州寺院设计-宁波寺庙规划_汉匠| 求是网 - 思想建党 理论强党| 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 技德应用| 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 污泥烘干机-低温干化机-工业污泥烘干设备厂家-焦作市真节能环保设备科技有限公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 成都思迪机电技术研究所-四川成都思迪编码器 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 淄博不锈钢无缝管,淄博不锈钢管-鑫门物资有限公司 |