算法题中nextInt(),nextLine()的易错陷阱

文章讨论了Java中Scanner类的nextInt()和nextLine()在处理用户输入时的差异,尤其是在处理空格和回车的情况。作者揭示了输入陷阱并提供了两种输入方法,以确保正确读取整数和字符串数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nextInt()读取空格或回车前的整数

nextLine()读取回车前的一行,空格不会中断读取 

陷阱代码如下:

public class nextInt {

	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入字符串数组的大小:");
		int num=scanner.nextInt();
		System.out.println("请输入数组的元素:");
		String[] arr=new String[num];
		for(int i=0;i<num;i++) {
			arr[i]=scanner.nextLine();
		}
		System.out.println(Arrays.toString(arr));
	}
}

 我们的意图是第一次输入确定数组长度为5,第二次输入依次把5行数据装进数组。

第一种输入方法: 

        这种方法输入5以后回车,这一次回车占用了一次nextLine()的回车,所以后续仅输入四次2就结束了。数组的第一个元素为空,因为第一次回车的前面和5的后面之间什么也没有。

 

第二种输入方法:

        这种方法输入5以后空格,这个空格和回车一样能表示nextInt()的读取已经结束,所以后续的内容都属于第一次nextLine()。可以看到数组正常装入了五个元素。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值