首页 / JAVA / Java中的数据验证和扫描程序
Java中的数据验证和扫描程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的数据验证和扫描程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1497字,纯文字阅读大概需要3分钟。
内容图文
![Java中的数据验证和扫描程序](/upload/InfoBanner/zyjiaocheng/819/01d8d96f300543848853d2c092815a85.jpg)
我有一个关于数据验证和扫描仪的问题.以下代码检查userinput.不允许使用除整数之外的任何内容,并要求用户重新输入值.我的问题是代码仅在扫描程序是在while循环中声明.如果扫描仪在外面声明,程序将无限执行.为什么?谢谢.
int UserInp;
boolean dataType=false;
while(dataType==false)
{
Scanner sc=new Scanner(System.in);
try
{
System.out.print("\nEnter a number: ");
UserInp=sc.nextInt();
dataType=true;
}
catch(Exception JavaInputMismatch)
{
System.out.println("Option not available.Try again.");
}
}
解决方法:
有趣的问题!
会发生什么是扫描程序尝试将非整数转换为整数,并意识到它不能 – 所以它抛出一个InputMismatchException.但是,如果翻译成功,它只会超过令牌.
意思是,无效字符串仍然在输入缓冲区中,并且每次循环并尝试调用nextInt()时它将无法进行转换.您永远不会将dataType设置为true,因此您可以无限循环.
要查看此操作,您可以获取catch块中的任意内容并将其打印出来:
catch(Exception JavaInputMismatch){
System.out.println( sc.next() );
System.out.println("Option not available.Try again.");
}
实际上,在输入无效后,我们得到以下结果:
Enter a number: hello
hello
Option not available.Try again.
Enter a number:
我们不会无限循环.这是因为对next()的调用从输入缓冲区中获取了值,并将扫描器的指针前进到该缓冲区中的下一个插槽,该插槽现在为空.所以nextInt()会在那种情况下等待输入.
哦,如果你在循环中初始化它的工作正常的原因是扫描仪将始终开始读取输入新鲜;扫描程序不跨实例共享状态,因此由于重新初始化,上一次迭代的缓冲区中的“hello”不在下一个缓冲区中.
从技术上讲,它仍然在标准输入缓冲区中,但扫描仪指向该缓冲区的指针超出了无效字符串,因为它将开始读取任何新输入,而不是现有输入.
内容总结
以上是互联网集市为您收集整理的Java中的数据验证和扫描程序全部内容,希望文章能够帮你解决Java中的数据验证和扫描程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。