最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Scanner對(duì)象的輸入結(jié)束標(biāo)記問題

 更新時(shí)間:2022年05月18日 10:22:49   作者:CronousGT  
這篇文章主要介紹了關(guān)于Scanner對(duì)象的輸入結(jié)束標(biāo)記問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Scanner對(duì)象的輸入結(jié)束標(biāo)記

最近開始復(fù)習(xí)java了,自己不知道或者需要注意的地方自己做個(gè)筆記

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("請(qǐng)輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? while(s.hasNext()){
? ? ? ? ? ? System.out.println(s.next());
? ? ? ? }
? ? }
}

我們輸入 ”123 345 678“ 然后回車,發(fā)現(xiàn)控制臺(tái)打印 

123

345

678

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

Scanner 使用分隔符模式將其輸入分解為標(biāo)記,默認(rèn)情況下該分隔符模式與空白匹配。

然后可以使用不同的 next 方法將得到的標(biāo)記轉(zhuǎn)換為不同類型的值。

所以這里我們知道它默認(rèn)是以空白匹配,所以我們輸入當(dāng)中有空格,它會(huì)一次讀取,直到回車,但是你會(huì)發(fā)現(xiàn)我們最后一個(gè)數(shù)字后面并沒有空格,系統(tǒng)也將數(shù)據(jù)分割出來了,

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

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("請(qǐng)輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? s.useDelimiter(" ");//這里我們將系統(tǒng)分隔符主動(dòng)設(shè)置為 " "
? ? ? ? while(s.hasNext()){
? ? ? ? ? ? System.out.println(s.next());
? ? ? ? }
? ? }
}

在這里我們主動(dòng)設(shè)置了一個(gè)分隔符 " " 然后上次一樣輸入數(shù)據(jù),輸入完按回車鍵 控制臺(tái)效果如下:

123

345

這里我們會(huì)發(fā)現(xiàn)第三個(gè)數(shù)并沒有輸出,這是為什么? 我們發(fā)現(xiàn)我們輸入完最后一個(gè)數(shù)時(shí)直接按回車了并沒有輸入我們?cè)O(shè)定的分隔符 " "

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

再看一個(gè)代碼(注意這里有個(gè)坑),我的需求是 獲取輸入值 ,當(dāng)輸入值為 "quit"時(shí)我們結(jié)束輸入

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("請(qǐng)輸入值:");
? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? while(s.hasNext()){
? ? ? ? ? ?if("quit".equals(s.next())){
? ? ? ? ? ? ? ?break;
? ? ? ? ? ?}else{
? ? ? ? ? ? ? ?System.out.println(s.next());
? ? ? ? ? ?}
? ? ? ? }
? ? }
}

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

123

345

可是我們的得到的輸出為

345

為什么只有”345“輸出?  這里我通過debug發(fā)現(xiàn)一個(gè)問題:因?yàn)楫?dāng)我們判斷是否等于 ”quit“值時(shí)我們調(diào)用 s.next() 已經(jīng)獲取”123“了,后來打印的是再一次獲取的值,也就是獲取的下一個(gè)值 "345"了,所以最后出現(xiàn)了 只打印 ”345“的問題

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

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("請(qǐng)輸入值:");
? ? ? ? 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對(duì)象

基本語法:

Scanner s = new Scanner(System.in);

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

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

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

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

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

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

  • nextLine()

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

可以獲得空白

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

當(dāng)然也可以不要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("請(qǐng)輸入數(shù)據(jù):");
?? ??? ?String str = scanner.nextLine();
?? ??? ?System.out.println("輸出的內(nèi)容:"+str);?? ?? ?
?? ??? ?scanner.close();? ?? ?
?? ?}

這樣也是可以的

Scanner輸入內(nèi)容理解(重點(diǎn))

我個(gè)人是這樣理解的

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

System.out.println("請(qǐng)輸入數(shù)據(jù):");
?? ??? ?String str = scanner.nextLine();
?? ??? ?System.out.println("輸出的內(nèi)容:"+str);

第一行代碼是標(biāo)題

請(qǐng)輸入數(shù)據(jù):

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

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

如下圖

在這里插入圖片描述

第一行為第一行代碼

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

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

注意

//凡是IO流的類如果不關(guān)閉會(huì)一直占用資源,要養(yǎng)成好習(xí)慣用完就關(guān)掉
?? ??? ?scanner.close();
?? ??? ?//IO流 輸入輸出流

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Java中通過Class類獲取Class對(duì)象的方法詳解

    Java中通過Class類獲取Class對(duì)象的方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中通過Class類獲取Class對(duì)象的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 沒有編輯器的環(huán)境下是如何創(chuàng)建Servlet(Tomcat+Java)項(xiàng)目的?

    沒有編輯器的環(huán)境下是如何創(chuàng)建Servlet(Tomcat+Java)項(xiàng)目的?

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著在沒有編輯器的環(huán)境下如何創(chuàng)建Servlet(Tomcat+Java)項(xiàng)目展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java中spring boot 字符串判斷是否為空方法小結(jié)

    Java中spring boot 字符串判斷是否為空方法小結(jié)

    這篇文章主要介紹了Java中spring boot字符串判斷是否為空,通過安裝依賴,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • Java生成條形碼code128(親測(cè)有效)

    Java生成條形碼code128(親測(cè)有效)

    這篇文章主要介紹了Java生成條形碼code128,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java必須掌握的 4 大基礎(chǔ)

    Java必須掌握的 4 大基礎(chǔ)

    我們一直在學(xué)習(xí)Java,但Java中總有一些概念含混不清,不論是對(duì)初級(jí)還是高級(jí)程序員都是如此。所以,這篇文章的目的就是弄清楚這些概念,需要的小伙伴可以參考以下喲
    2021-09-09
  • springmvc 傳遞和接收數(shù)組參數(shù)的實(shí)例

    springmvc 傳遞和接收數(shù)組參數(shù)的實(shí)例

    下面小編就為大家分享一篇springmvc 傳遞和接收數(shù)組參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • MyBatis整合Redis實(shí)現(xiàn)二級(jí)緩存的示例代碼

    MyBatis整合Redis實(shí)現(xiàn)二級(jí)緩存的示例代碼

    這篇文章主要介紹了MyBatis整合Redis實(shí)現(xiàn)二級(jí)緩存的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • springboot上傳圖片文件步驟詳解

    springboot上傳圖片文件步驟詳解

    這篇文章主要介紹了springboot上傳圖片文件步驟詳解,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java中的字符編碼問題處理心得總結(jié)

    Java中的字符編碼問題處理心得總結(jié)

    Java中的String類默認(rèn)是Unicode編碼,大家平常所說的UTF-8就是使用最廣的一種unicode的實(shí)現(xiàn)方式,以下我們還是來看一下Java中的字符編碼問題處理心得總結(jié):
    2016-06-06
  • Java 通過mave命令下載jar包的示例代碼

    Java 通過mave命令下載jar包的示例代碼

    這篇文章主要介紹了Java 通過mave命令下載jar的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

夏津县| 九龙城区| 婺源县| 行唐县| 客服| 石林| 朝阳区| 鹤庆县| 井冈山市| 大庆市| 宜川县| 绥棱县| 赤城县| 衡阳市| 井研县| 延川县| 金山区| 五大连池市| 工布江达县| 白河县| 全椒县| 高州市| 霍山县| 大埔县| 淮阳县| 海丰县| 绵阳市| 融水| 合肥市| 富锦市| 长治县| 若羌县| 辛集市| 桃源县| 台州市| 昌吉市| 蓬莱市| 沿河| 古田县| 垣曲县| 黄山市|