欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于scanner.nextInt()等next()和scanner.nextIine()連用注意事項(xiàng)

 更新時(shí)間:2023年04月03日 10:51:40   作者:Mliak  
這篇文章主要介紹了關(guān)于scanner.nextInt()等next()和scanner.nextIine()連用注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。

scanner.nextInt()等next()和scanner.nextIine()連用注意事項(xiàng)

背景:需求是輸入二維矩陣行列數(shù)和矩陣的內(nèi)容。

我想要的效果是這樣的,用兩個(gè)int記錄第一行輸入行列數(shù),剩下用string記錄用戶輸入的二維矩陣內(nèi)容。

實(shí)操出現(xiàn)問(wèn)題

public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	while(scanner.hasNext()) {
		int x = scanner.nextInt();
		int y = scanner.nextInt();
		if (x==0&&y==0) {
			scanner.close();
			break;
		}
		//scanner.nextLine();
		String a = "";
		for (int i = 0; i < x; i++) {
			a +=scanner.nextLine();
		}
		for (int i = 0; i < a.length(); i++) {
			if (i%y == 0) {
				System.out.println();
			}
			System.out.print(a.charAt(i));
			
		}
		
		}
}

輸入?yún)s出現(xiàn)了問(wèn)題,本想輸入4行4列,卻只接收了3行數(shù)據(jù),就開(kāi)始打印了

如圖:

在這里插入圖片描述

原因

這就涉及到next()與nextline()方法區(qū)別的。

  • nextInt()的API寫到 “將輸入信息的下一個(gè)標(biāo)記掃描為一個(gè) int”;
  • nextline()是“此掃描器執(zhí)行當(dāng)前行,并返回跳過(guò)的輸入信息。 此方法返回當(dāng)前行的其余部分,不包括結(jié)尾處的行分隔符。當(dāng)前位置移至下一行的行首。 因?yàn)榇朔椒〞?huì)繼續(xù)在輸入信息中查找行分隔符,所以如果沒(méi)有行

分隔符,它可能會(huì)緩沖所有輸入信息,并查找要跳過(guò)的行。”

(假設(shè)還是以上輸入)所以上面的代碼分析是這樣的:

/*用戶輸入:
 
  4空格4\n  	//遇到空格結(jié)束 x=4, 第二nextInt()遇到換行了結(jié)束它的掃描 y=4;
  			但是此行還沒(méi)有結(jié)束,nextLine會(huì)繼續(xù)掃描剩余部分直到換行,光標(biāo)才會(huì)進(jìn)入下一行
  			只不過(guò)剩余的是空字符串,記第一次nextLine()為a1,a1=""
  ****\n  	//a2 = "****",a2記第二次nextLine()
  ....\n  	//a3= "...."
  ....\n	//a4= "...."	
  ****\n	//此刻此行沒(méi)有對(duì)應(yīng)的nextline(),也就無(wú)法輸入了,接下就執(zhí)行打印輸出了。
  
  */

解決

在nextInt()與想接收數(shù)據(jù)nextline()之間再添加一行scanner.nextLine();用于緩沖換行符,換入新的一行。

int x = scanner.nextInt();
		int y = scanner.nextInt();
		if (x==0&&y==0) {
			scanner.close();
			break;
		}
		scanner.nextLine();//用于緩沖換行符,換入新的一行。
		String a = "";
		for (int i = 0; i < x; i++) {
			a +=scanner.nextLine();
		}

Scanner類: next() 與 nextLine()與nextInt()

next()、nextLine()、nextInt()是scanner內(nèi)置的方法。

next()

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

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

3、只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結(jié)束符。

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

Scanner scan = new Scanner(System.in);
?? ??? ?System.out.print("請(qǐng)輸入:");
?? ??? ?String year = scan.next();
?? ??? ?System.out.printf("%s",year);

輸入:this is a test

輸出:this

nextInt()

使用nextInt()方法時(shí),與next()方法類似,只是它的返回值是int類型的,依舊將空格看作是兩個(gè)輸入的數(shù)據(jù)的間隔

(當(dāng)使用nexInt()方法時(shí),只能輸入int類型的數(shù)據(jù)。)

nextLine()

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

2、可以獲得空白。

Scanner scan = new Scanner(System.in);
System.out.print("請(qǐng)輸入:");
String year = scan.nextln();
System.out.printf("%s",year);

輸入:this is a test

輸出:this is a test

useDelimiter( )方法

用Scanner.useDelimiter( )方法,可以將分隔符號(hào)修改為"回車",或者其他字符。

//useDelimiter("\n"); //“\n”換行符(回車)作為輸入的分隔符
Scanner scan = new Scanner(System.in).useDelimiter("\n");
System.out.print("請(qǐng)輸入:");
String year = scan.next();
System.out.printf("%s",year);

輸入:this is a test

輸出:this is a test

注意:

使用nextLine()方法時(shí),不將空格看做是兩個(gè)字符串的間隔,而是看作字符串的一部分,返回時(shí),它作為String類型一并返回

使用next()方法時(shí),將空格看作是兩個(gè)字符串的間隔

使用nextInt()方法時(shí),與next()方法類似,只是它的返回值是int類型的,依舊將空格看作是兩個(gè)輸入的數(shù)據(jù)的間隔(當(dāng)使用nexInt()方法時(shí),只能輸入int類型的數(shù)據(jù)。)

總結(jié)

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

相關(guān)文章

  • Mybatis-Plus讀寫Mysql的Json字段的操作代碼

    Mybatis-Plus讀寫Mysql的Json字段的操作代碼

    這篇文章主要介紹了Mybatis-Plus讀寫Mysql的Json字段的操作代碼,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Idea運(yùn)行單個(gè)main方法,不編譯整個(gè)工程的問(wèn)題

    Idea運(yùn)行單個(gè)main方法,不編譯整個(gè)工程的問(wèn)題

    這篇文章主要介紹了Idea運(yùn)行單個(gè)main方法,不編譯整個(gè)工程的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解

    Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解

    這篇文章主要介紹了Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解,命名我們就可以知道它是一個(gè)監(jiān)聽(tīng)者,分析springboot啟動(dòng)流程我們會(huì)發(fā)現(xiàn),它其實(shí)是用來(lái)在整個(gè)啟動(dòng)流程中接收不同執(zhí)行點(diǎn)事件通知的監(jiān)聽(tīng)者,需要的朋友可以參考下
    2023-11-11
  • Java多線程之synchronized關(guān)鍵字的使用

    Java多線程之synchronized關(guān)鍵字的使用

    這篇文章主要介紹了Java多線程之synchronized關(guān)鍵字的使用,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 如何準(zhǔn)確判斷郵件地址是否存在

    如何準(zhǔn)確判斷郵件地址是否存在

    本文介紹了如何判斷郵件地址是否存在的方法,具有很高的使用價(jià)值,提高了工作效率
    2015-07-07
  • mybatis使用Integer類型查詢可能出現(xiàn)的問(wèn)題

    mybatis使用Integer類型查詢可能出現(xiàn)的問(wèn)題

    這篇文章主要介紹了mybatis使用Integer類型查詢可能出現(xiàn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 使用XSD校驗(yàn)Mybatis的SqlMapper配置文件的方法(1)

    使用XSD校驗(yàn)Mybatis的SqlMapper配置文件的方法(1)

    這篇文章以前面對(duì)SqlSessionFactoryBean的重構(gòu)為基礎(chǔ),簡(jiǎn)單的介紹了相關(guān)操作知識(shí),然后在給大家分享使用XSD校驗(yàn)Mybatis的SqlMapper配置文件的方法,感興趣的朋友參考下吧
    2016-11-11
  • 詳解FutureTask如何實(shí)現(xiàn)最大等待時(shí)間

    詳解FutureTask如何實(shí)現(xiàn)最大等待時(shí)間

    這篇文章主要為大家詳細(xì)介紹了如何從源碼中了解FutureTask實(shí)現(xiàn)最大等待時(shí)間的方法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-03-03
  • Mybatis如何根據(jù)List批量查詢List結(jié)果

    Mybatis如何根據(jù)List批量查詢List結(jié)果

    這篇文章主要介紹了Mybatis如何根據(jù)List批量查詢List結(jié)果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java開(kāi)發(fā)分布式服務(wù)框架Dubbo調(diào)用過(guò)程

    java開(kāi)發(fā)分布式服務(wù)框架Dubbo調(diào)用過(guò)程

    這篇文章主要為大家介紹了java開(kāi)發(fā)分布式服務(wù)框架Dubbo調(diào)用過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11

最新評(píng)論