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

Java中Scanner的使用及nextLine和nextInt等混用報錯解決方案

 更新時間:2026年03月02日 10:11:55   作者:丁花不是花  
Scanner類用于從控制臺輸入數(shù)據(jù),常用方法包括next()、nextLine()、nextInt()、nextDouble()和nextBoolean(),案例測試和常見錯誤情況分析表明,nextDouble等方法不會跳過空格和回車,而nextLine會讀取整行并跳到下一行

1.Scanner類的概述

Scanner類用于掃描從控制臺輸入的數(shù)據(jù),可以接收字符串和基本數(shù)據(jù)類型的數(shù)據(jù)。位于java.util.Scanner包中。

2.常用方法

1、String  next(); 

  • 作用:接收控制臺輸入的一個字符串。
  • 注意:以空格和回車為結(jié)束符 

2、String  nextLine();     

  • 作用:接收控制臺輸入的一個字符串。 
  • 注意:以回車為結(jié)束符

3、int  nexInt();     

  • 作用:接收控制臺輸入的一個int類型的數(shù)據(jù)。
  • 注意:以空格和回車為結(jié)束符 

4、double  nextDouble();     

  • 作用:接收控制臺輸入的一個double類型的數(shù)據(jù)。
  • 注意:以空格和回車為結(jié)束符  

5、boolean  nextBoolean();     

  • 作用:接收控制臺輸入的一個boolean類型的數(shù)據(jù)。
  • 注意:以空格和回車為結(jié)束符 

3.案例測試

//步驟1、創(chuàng)建Scanner類的一個對象。 
Scanner scanner=new Scanner(System.in); 	 
//步驟2、通過scanner調(diào)用next等方法,接收控制臺輸入的數(shù)據(jù)。 
System.out.println(“姓名:”);
String  name=scanner.next();

4.常見錯誤情況

import java.util.Scanner;

public class Tess {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int age = scanner.nextInt();
		String name = scanner.nextLine();
		double salary = scanner.nextDouble();

		System.out.println(age);
		System.out.println(name);
		System.out.println(salary);

	}
}

代碼和錯誤如上,操作:輸入18回車,輸入張三回車。

本來,我們應(yīng)該輸入三行,可是我們只輸入了兩行數(shù)據(jù),就報錯。

并且報錯信息說明是nextDouble的錯誤。到底是怎么回事呢。

問題分析:

由于是nextDouble報錯,可見,上面幾行都是沒有問題的。

所有我們調(diào)整一下代碼位置,查看一下具體每行的賦值,當然個人可以Debug更加方便。

調(diào)整為輸入一個,輸出一個。并按照之前操作輸入數(shù)據(jù)

public class Tess {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int age = scanner.nextInt();
		System.out.println("age:" + age);
		String name = scanner.nextLine();
		System.out.println("name:" +name);
		double salary = scanner.nextDouble();
		System.out.println("salary:" +salary);
	}
}

如上圖可以看到,當我們輸入18的時候,age和name都已經(jīng)被賦值,所以當輸入張三時,會賦值給salary,類型轉(zhuǎn)換不了,所以報錯。

結(jié)論:

經(jīng)過分析,我們可以得出nextDouble()等方法,讀出空格或者回車前的字符串或者數(shù)字,并且下次讀時不會切換到空格或者回車之后(也就是還在18之后紅線處繼續(xù)讀,不會切換到一行)。而nextLine則會讀取本行且下次自動切換到下一行開頭讀。

5.解決方法

5.1方法一

遇到nextLine再回車,其他都用空格隔開

代碼同上

nextInt 之后用空格隔開,而name是nextLine所以輸完張三,回車,最后一個輸入無所謂。

5.2方法二

就想一行輸入一個,那么每個出來nextDouble、nextInt等方法后面都要加上一句不需要賦值的nextLine,為了把讀的位置切換到下一行。

import java.util.Scanner;

public class Tess {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int age = scanner.nextInt();
		scanner.nextLine();//把讀的位置切換到下一行
		String name = scanner.nextLine();
		double salary = scanner.nextDouble();
		scanner.nextLine();//把讀的位置切換到下一行
		System.out.println("age:" + age);
		System.out.println("name:" + name);
		System.out.println("salary:" + salary);

	}
}

5.3方法三

也是最簡單粗暴的方法,全程用next代替nextLine,缺點是不可以接受帶空格的字符串

import java.util.Scanner;

public class Tess {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int age = scanner.nextInt();
		String name = scanner.next();
		double salary = scanner.nextDouble();
		System.out.println("age:" + age);
		System.out.println("name:" + name);
		System.out.println("salary:" + salary);

	}
}

可以看到,不用考慮回車問題,但是字符串不能輸入空格。

總結(jié)

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

相關(guān)文章

  • springBoot的事件機制GenericApplicationListener用法解析

    springBoot的事件機制GenericApplicationListener用法解析

    這篇文章主要介紹了springBoot的事件機制GenericApplicationListener用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值的相關(guān)資料
    2019-09-09
  • Java面向?qū)ο笾鄳B(tài)

    Java面向?qū)ο笾鄳B(tài)

    這篇文章主要介紹了Java面向?qū)ο笾鄳B(tài),文章以什么是多態(tài)、多態(tài)的實現(xiàn)條件、多態(tài)的訪問特點、多態(tài)的優(yōu)點和缺點的相關(guān)資料展開文章內(nèi)容,需要的小伙伴可以參考一下
    2021-10-10
  • java連接Mysql數(shù)據(jù)庫的工具類

    java連接Mysql數(shù)據(jù)庫的工具類

    這篇文章主要介紹了java連接Mysql數(shù)據(jù)庫的工具類,非常的實用,推薦給大家,需要的朋友可以參考下
    2015-03-03
  • Java skill動態(tài)指定feign的訪問地址方式

    Java skill動態(tài)指定feign的訪問地址方式

    在使用Feign調(diào)用內(nèi)部服務(wù)時,通過Redis查詢ELB地址并進行調(diào)用,遇到的問題包括:指定的地址在Nacos服務(wù)名中不存在時,URL參數(shù)需要賦初始值;使用ThreadLocal獲取當前線程信息時易出問題,建議使用MDC跨線程傳遞參數(shù),并注意請求結(jié)束后的清理
    2026-01-01
  • java中hashCode方法與equals方法的用法總結(jié)

    java中hashCode方法與equals方法的用法總結(jié)

    總的來說,Java中的集合(Collection)有兩類,一類是List,再有一類是Set。前者集合內(nèi)的元素是有序的,元素可以重復(fù);后者元素無序,但元素不可重復(fù)
    2013-10-10
  • Java流程控制語句最全匯總(中篇)

    Java流程控制語句最全匯總(中篇)

    這篇文章主要介紹了Java流程控制語句最全匯總(中篇),本文章內(nèi)容詳細,通過案例可以更好的理解數(shù)組的相關(guān)知識,本模塊分為了三部分,本次為中篇,需要的朋友可以參考下
    2023-01-01
  • java中request常用方法小結(jié)

    java中request常用方法小結(jié)

    這篇文章主要介紹了java中request常用方法小結(jié),需要的朋友可以參考下
    2014-10-10
  • mybatis中注解映射SQL示例代碼

    mybatis中注解映射SQL示例代碼

    這篇文章主要給大家介紹了關(guān)于mybatis中注解映射SQL的相關(guān)資料,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),對大家的學(xué)習(xí)或者共組具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Springboot2.x+Quartz分布式集群的實現(xiàn)

    Springboot2.x+Quartz分布式集群的實現(xiàn)

    這篇文章主要介紹了Springboot2.x+Quartz分布式集群的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Springboot熱部署實現(xiàn)原理及實例詳解

    Springboot熱部署實現(xiàn)原理及實例詳解

    這篇文章主要介紹了Springboot熱部署實現(xiàn)原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05

最新評論

万宁市| 新干县| 尼木县| 寿光市| 兰溪市| 蚌埠市| 南乐县| 永清县| 改则县| 宁海县| 于田县| 西丰县| 龙胜| 芒康县| 宜兴市| 舟曲县| 东明县| 宝山区| 孝昌县| 定西市| 兰西县| 广德县| 友谊县| 鹤岗市| 大厂| 长海县| 盐城市| 龙川县| 江川县| 荔波县| 芦山县| 河池市| 桂东县| 荔浦县| 鹤庆县| 惠来县| 定南县| 辽源市| 绥滨县| 枣庄市| 灵璧县|