黑马程序员技术交流社区
标题: 关于Scanner读取一个整数nextInt()和读取一行nextLine()出现的问题 [打印本页]
作者: 李春林 时间: 2016-9-28 22:55
标题: 关于Scanner读取一个整数nextInt()和读取一行nextLine()出现的问题
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);}
作者: Fate_stay 时间: 2016-9-28 23:01
感谢分享!
作者: Liby94 时间: 2016-9-28 23:02
感谢分享!
作者: Liby94 时间: 2016-9-28 23:04
受教了
作者: Liby94 时间: 2016-9-28 23:07
是不是回复一个就有一个黑马币?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |