java中检测输入是否合法的方法

本文探讨了Java中使用Scanner类进行输入合法性检查的方法,通过实例演示如何避免因非法输入导致的循环提示问题,改进后的代码提高了输入效率并确保了程序的稳定性。

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

public class TestInput {
	public static void main(String[] args) {

		System.out.println("请输入一个整数:");
		int num = 0;

		while (true) {
			Scanner input = new Scanner(System.in);
			if (input.hasNextInt()) {

				num = input.nextInt();
				break;
			} else {
				System.out.println("你的输入有误,请重新输入一个整数:");

			}
		}
		System.out.println(num);
	}
}
请输入一个整数:
0.3
你的输入有误,请重新输入一个整数:
sdad
你的输入有误,请重新输入一个整数:
sdadadade
你的输入有误,请重新输入一个整数:
.;'
你的输入有误,请重新输入一个整数:
1.23.
你的输入有误,请重新输入一个整数:
2
2

最近java输入的时候,经常碰到输入不合理引发的潜在bug,于是写了一个检测java输入是否合法的方法;其他类型输入应该类似。不清楚为什么每次都要在while循环中每次都要new一个scanner类。。但是不这样就一直循环“请重新输入一个整数”。。。

在一番探索后,并且看到了一位大佬的博客,获得了些许启发,Java中Scanner用法总结_Megustas_JJC的博客-优快云博客_java scanner 可能像大佬所写,输出完的回车键,被next()收留了下来,所以导致了后边的结果,于是我对我的代码做了修改。

public class TestInput {
	public static void main(String[] args) {
		int[] a = new int[5];
		System.out.println("请输入一个整数:");
   Scanner input = new Scanner(System.in);
		for (int i = 0; i < a.length; i++) {
			
			if (input.hasNextInt()) {

				a[i] = input.nextInt();
				
				// break;
			} else {
				System.out.println("你的输入有误,请重新输入一个整数:");
				
				String string = input.next();
				i--;
			}
		}
		System.out.println(Arrays.toString(a));
	}
}

经测试,这段代码不会出现任何问题,并且将new scanner 也放到了循环体外边,在用debug调试的过程中我发现 了每次输出的“你的输出有误。。。。”这一句话,像一个孤儿一样没人收留,到了后边的循环貌似是被后来的if (input.hasNextInt())判断为不符合条件还是怎么样?于是又在输出else循环体。所以使用了一个input.next()将这句话装进去,让这个孤儿有了家。所以后边的循环变得正常了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值