最新国产好看的视频,伊人天堂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(); 

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

2、String  nextLine();     

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

3、int  nexInt();     

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

4、double  nextDouble();     

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

5、boolean  nextBoolean();     

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

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回車,輸入張三回車。

本來,我們應該輸入三行,可是我們只輸入了兩行數(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)換不了,所以報錯。

結論:

經(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);

	}
}

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

總結

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

相關文章

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

    springBoot的事件機制GenericApplicationListener用法解析

    這篇文章主要介紹了springBoot的事件機制GenericApplicationListener用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值的相關資料
    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)點和缺點的相關資料展開文章內(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)部服務時,通過Redis查詢ELB地址并進行調(diào)用,遇到的問題包括:指定的地址在Nacos服務名中不存在時,URL參數(shù)需要賦初始值;使用ThreadLocal獲取當前線程信息時易出問題,建議使用MDC跨線程傳遞參數(shù),并注意請求結束后的清理
    2026-01-01
  • java中hashCode方法與equals方法的用法總結

    java中hashCode方法與equals方法的用法總結

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

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

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

    java中request常用方法小結

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

    mybatis中注解映射SQL示例代碼

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

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

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

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

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

最新評論

博爱县| 双流县| 龙游县| 潮州市| 二连浩特市| 新巴尔虎左旗| 肇州县| 榆林市| 五河县| 晋中市| 宝兴县| 宁蒗| 石城县| 西乌珠穆沁旗| 治县。| 广丰县| 株洲县| 平江县| 师宗县| 申扎县| 时尚| 洪泽县| 建宁县| 望都县| 垣曲县| 中超| 甘南县| 乐亭县| 从化市| 临泉县| 遵化市| 兴山县| 西林县| 中西区| 合肥市| 怀安县| 资阳市| 城市| 建平县| 东兰县| 双桥区|