A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Scanner获取数据时出现的并发修改异常问题的三种解决办法
  • 当使用Scanner对象调用nextInt()方法的时候,下一个再调用nextLine()方法获取数据时候会出现第二个数据获取不到的问题
  •                    Scanner sc = new Scanner(System.in);
  •                    System.out.println("请输入第一个数:");
  •                    int x = sc.nextInt();
  •                    System.out.println("请输入第二个数:");
  •                    String line = sc.nextLine();
原因:因为在我们敲回车键的时候,在键盘相当于录入 \r\n,而这个\r\n不会被 nextInt方法会接收,但是nextLine方法会以这个\r\n作为结束标记,所以第二个数获取不到.

解决方法
  • 解决方案一:创建两次键盘录入对象
  • 解决方案二:以后再使用的过程中都用nextLine方法获取数据,然后再通过转换的方法将整数字符串转换成为int类型
  • 解决方案三:调用多一次nextLine()方法
案例: ```java package com.heima.scanner;
解决方案:调用多一次nextLine()方法
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {    Scanner sc = new Scanner(System.in);    System.out.println("请输入第一个数:");    int x = sc.nextInt(); // \r\n    //再次使用nextLine方法,让这个nextLine方法接收到\r\n就可以    sc.nextLine();    System.out.println("请输入第二个数:");    String line = sc.nextLine();    System.out.println("第一个数是:"+ x);    System.out.println("第二个数是:"+ line);}

4 个回复

倒序浏览
感谢分享!
回复 使用道具 举报

感谢分享!
回复 使用道具 举报
受教了
回复 使用道具 举报
是不是回复一个就有一个黑马币?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马