Scanner类的使用的小问题和避免方式(了解)

项目场景:

Scanner 输入出现问题

问题描述:

  1. 问题: 当调用一个以空格为分割符号的录入之后,又调用了以回车符为分隔符的方法.你会发现当你录入第一个数据之后,第二个不会等待你录入,程序就结束了.
import java.util.Scanner;

public class ScannerProblem_03 {
	public static void main(String[] args) {
		/*
		Scanner sc = new Scanner(System.in);
		// 解决方式1
		System.out.print("请录入一个整数:");
		// int num = sc.nextInt(); 
		String number = sc.nextLine();
		int num = Integer.parseInt(number); // 这个方法的作用就是把一个字符串转为int数据
		System.out.println(num);
		System.out.print("请录入您的姓名:");
		String name = sc.nextLine();
		System.out.println("-----"+name+"++++++");
		
		// 解决方式2
		Scanner sc2 = new Scanner(System.in);
		System.out.print("请录入一个整数:");
		int num2 = sc2.nextInt(); 
		System.out.println(num);
		Scanner sc3 = new Scanner(System.in);
		System.out.print("请录入您的姓名:");
		String name3 = sc3.nextLine();
		System.out.println("-----"+name3+"++++++");
		*/
		Scanner sc = new Scanner(System.in);
		// 解决方式3
		System.out.print("请录入一个整数:");
		int num = sc.nextInt(); // 12   \r 
		sc.nextLine();// 就一个目的取走残留的回车符: \r
		System.out.println(num);
		System.out.print("请录入您的姓名:");
		String name = sc.nextLine();
		System.out.println("-----"+name+"++++++");
	}
}

原因分析:

以空格为分割符号的录入不会读取输入完成之后的回车
回车符号在缓冲区中下一个以回车符为分隔符的方法会读取缓冲区中的回车符

解决方案:

1.两次都调用nextLine()方法.第一次就会残留的换行符取走, 下一个nextLine取数据的时候Scanner里什么数据都没有,只能等待用户录入

2.创建两个Scanner对象, 第二Scanner和第一个Scanner就不是同一个对象, 录入的数据存储的位置也不一样. 第二个Scanner的nextLine方法只能等待用户录入.
3.常用的就是第一种方案, 录入基本类型数据先用字符串存储.再想办法把字符串转为基本类型数据.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值