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

Java之Scanner.nextLine()讀取回車(chē)的問(wèn)題及解決

 更新時(shí)間:2023年04月03日 14:10:53   作者:蒙塔基的小黃油餅干  
這篇文章主要介紹了Java之Scanner.nextLine()讀取回車(chē)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問(wèn)題描述

我們?cè)谑褂胘ava讀取鍵盤(pán)輸入時(shí),如果先讀取一個(gè)int變量,再讀取下一行的字符串時(shí),會(huì)發(fā)現(xiàn)程序運(yùn)行結(jié)果與預(yù)期不符,程序并沒(méi)有讀取到下一行的字符串。

即發(fā)生在如下情形:

Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String s=sc.nextLine();

問(wèn)題分析

從代碼分析我們的需求是先輸入一個(gè)int變量,再在下一行輸入一個(gè)字符串,也就是說(shuō)我們使用鍵盤(pán)輸入的時(shí)候,其實(shí)輸入了三部分:

3
words

分別是:數(shù)字3,換行符,字符串words。

如何處理多出來(lái)的換行符

從剛才的分析可以看到,問(wèn)題的原因是nextLine()方法沒(méi)有讀取到我們的字符串,而是讀入了我們的Enter換行符。

方法一

既然多出了一個(gè)換行符,那我們可以在讀取字符串之前將換行符讀掉:

Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc.nextLine();//將換行符讀掉
String s=sc.nextLine();

方法二

重新創(chuàng)建Scanner對(duì)象:

Scanner sc1=new Scanner(System.in);
int n=sc1.nextInt();
Scanner sc2=new Scanner(System.in);
String s=sc2.nextLine();

這樣在讀取完n之后,換行符會(huì)被丟棄,下一行被視作sc2開(kāi)始讀入的位置。

實(shí)戰(zhàn)

下面是tengxun公司2020年4月26日暑期軟件相關(guān)崗位實(shí)習(xí)筆試的第一題:

數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之一一隊(duì)列

隊(duì)列有五種基本操作,插入隊(duì)尾、取出隊(duì)首、刪除隊(duì)首、隊(duì)列大小、清空隊(duì)列。

現(xiàn)在讓你模擬一個(gè)隊(duì)列的操作,具體格式參考輸入。

輸入描述:

第一行輸入一個(gè)整數(shù)T,表示接下來(lái)有T組測(cè)試數(shù)據(jù)。
對(duì)于每組測(cè)試數(shù)據(jù):
第一行輸入一個(gè)整數(shù)Q,表示有Q次操作。
接下來(lái)Q行,每行輸入一種隊(duì)列操作方式,具體格式如下:
初始狀態(tài)下隊(duì)列為空。
插入隊(duì)尾: PUSH X
取出隊(duì)首: TOP//僅僅是看一下隊(duì)首元素,不要把隊(duì)首元素刪除
刪除隊(duì)首: POP
隊(duì)列大小: SIZE
清空隊(duì)列: CLEAR
1<T<100
1<Q,X≤1000
保證操作為以上5種的任意一種。

輸出描述:

對(duì)于每組測(cè)試數(shù)據(jù):
如果操作為“取出隊(duì)首”,輸出隊(duì)首元素,如果無(wú)法取出,輸出“-1”
如果操作為“刪除隊(duì)首”,如果無(wú)法刪除,輸出“-1”
如果操作為“隊(duì)列大小”,輸出隊(duì)列大小
其他操作無(wú)需輸出

示例輸入

2
7
PUSH 1
PUSH 2
TOP
POP
TOP
POP
POP
5
PUSH 1
PUSH 2
SIZE
POP
SIZE

結(jié)果:

1
2
-1
2
1

問(wèn)題解答

這道題并不難,使用LinkedList就可以實(shí)現(xiàn)上述操作,當(dāng)然,Queue的底層實(shí)現(xiàn)本來(lái)也就是LinkedList。

之所以列舉這道題是因?yàn)檫@道題會(huì)出現(xiàn)nextLine()讀取失敗的問(wèn)題,因?yàn)槲覀兪紫纫x取整形變量T,之后再往后逐行讀取,如果不處理?yè)Q行符的問(wèn)題,將導(dǎo)致程序運(yùn)行出現(xiàn)異常。

我的AC答案:

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {
? ? public static void main(String[] args) {
? ? ? ? Scanner sc =new Scanner(System.in);
? ? ? ? int t=sc.nextInt();
? ? ? ? while(t>0){
? ? ? ? ? ? int q=sc.nextInt();
? ? ? ? ? ? List<Integer> n=new LinkedList<>();
? ? ? ? ? ? for(int i=0;i<=q;i++){//注意!i<=q,這里的‘='就是因?yàn)閝和第一行輸入之間的換行符
? ? ? ? ? ? ? ? String s=sc.nextLine();
? ? ? ? ? ? ? ? if(s.equals("")){//在這道題中,當(dāng)我讀取到換行符時(shí),直接跳過(guò),不做任何操作
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(s.startsWith("PUSH")){
? ? ? ? ? ? ? ? ? ? n.add(Integer.parseInt(s.split(" ")[1]));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(s.equals("TOP")){
? ? ? ? ? ? ? ? ? ? if(n.size()==0){
? ? ? ? ? ? ? ? ? ? ? ? System.out.println(-1);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? System.out.println(n.get(0));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(s.equals("POP")){
? ? ? ? ? ? ? ? ? ? if(n.isEmpty()){
? ? ? ? ? ? ? ? ? ? ? ? System.out.println(-1);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? n.remove(0);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(s.equals("SIZE")){
? ? ? ? ? ? ? ? ? ? System.out.println(n.size());
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(s.equals("CLEAR")){
? ? ? ? ? ? ? ? ? ? n.clear();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? t--;
? ? ? ? }
? ? }
}

在上面的代碼中,我首先使用了

for(int i=0;i<=q;i++)

注意到了q與接下來(lái)的輸入之間的換行符。

之后,當(dāng)遇到換行符時(shí):

String s=sc.nextLine();
if(s.equals(""))
? ? continue;

來(lái)解決該問(wèn)題。

總結(jié)

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

相關(guān)文章

  • java文件操作報(bào)錯(cuò):java.io.FileNotFoundException(拒絕訪問(wèn))問(wèn)題

    java文件操作報(bào)錯(cuò):java.io.FileNotFoundException(拒絕訪問(wèn))問(wèn)題

    在進(jìn)行編程時(shí),經(jīng)常會(huì)遇到因疏忽小細(xì)節(jié)而導(dǎo)致的錯(cuò)誤,如忘記在路徑后添加文件名,本文通過(guò)一個(gè)具體的修改前后對(duì)比示例,解釋了錯(cuò)誤原因,并給出了解決方案,這類(lèi)經(jīng)驗(yàn)分享對(duì)編程學(xué)習(xí)者具有參考價(jià)值
    2024-10-10
  • Servlet中文亂碼問(wèn)題解決方案解析

    Servlet中文亂碼問(wèn)題解決方案解析

    這篇文章主要介紹了Servlet中文亂碼問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 解決String字符串轉(zhuǎn)JSONObject順序不對(duì)的問(wèn)題

    解決String字符串轉(zhuǎn)JSONObject順序不對(duì)的問(wèn)題

    這篇文章主要介紹了解決String字符串轉(zhuǎn)JSONObject順序不對(duì)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java獲取文件的hash值(SHA256)兩種方式

    Java獲取文件的hash值(SHA256)兩種方式

    這篇文章主要給大家介紹了關(guān)于Java獲取文件hash值(SHA256)的兩種方式,SHA256是一種哈希算法,它是不可逆的,也就是說(shuō)無(wú)法解密,需要的朋友可以參考下
    2023-09-09
  • Java五種方式實(shí)現(xiàn)多線程循環(huán)打印問(wèn)題

    Java五種方式實(shí)現(xiàn)多線程循環(huán)打印問(wèn)題

    本文主要介紹了Java五種方式實(shí)現(xiàn)多線程循環(huán)打印問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 使用springboot打包后的文件讀取方式

    使用springboot打包后的文件讀取方式

    這篇文章主要介紹了使用springboot打包后的文件讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺談Java HttpURLConnection請(qǐng)求方式

    淺談Java HttpURLConnection請(qǐng)求方式

    這篇文章主要介紹了淺談Java HttpURLConnection請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • spring-boot-starter-security的簡(jiǎn)單使用方式

    spring-boot-starter-security的簡(jiǎn)單使用方式

    文章介紹了三種使用Spring Boot Security的方法:基于配置文件、基于配置類(lèi)和基于注解的方式,通過(guò)這些方法,可以實(shí)現(xiàn)對(duì)Web應(yīng)用的權(quán)限控制,確保只有授權(quán)用戶(hù)才能訪問(wèn)特定資源
    2024-11-11
  • Java用20行代碼實(shí)現(xiàn)抖音小視頻批量轉(zhuǎn)換為gif動(dòng)態(tài)圖

    Java用20行代碼實(shí)現(xiàn)抖音小視頻批量轉(zhuǎn)換為gif動(dòng)態(tài)圖

    這篇文章主要介紹了Java用20行代碼實(shí)現(xiàn)抖音小視頻批量轉(zhuǎn)換為gif動(dòng)態(tài)圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring MVC 文件上傳的示例代碼

    Spring MVC 文件上傳的示例代碼

    本篇文章主要介紹了Spring MVC 文件上傳的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09

最新評(píng)論

邵武市| 巴林左旗| 婺源县| 买车| 光泽县| 平顶山市| 建宁县| 西藏| 贵溪市| 南充市| 无极县| 嘉定区| 博兴县| 昌邑市| 临泉县| 白沙| 永和县| 台中市| 柘城县| 安达市| 时尚| 西安市| 什邡市| 西峡县| 砚山县| 商丘市| 清原| 华蓥市| 满城县| 新沂市| 浦城县| 桐城市| 五华县| 高安市| 兰州市| 连山| 体育| 灵丘县| 车致| 金塔县| 紫金县|