传奇刘星
管理员
管理员
  • 最后登录2024-04-24
  • 发帖数588
  • 社区居民
  • 忠实会员
阅读:9348回复:1

hasNextInt() 的2点注意事项

楼主#
更多 发布于:2016-05-08 21:17
1.会对下一次的输入进行处理,即紧跟后面的next等方法不用进行控制台再次输入。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个数");
int a = 0;
while (!in.hasNextInt()) {
System.out.print("请重新输入整数:");
}
a = in.nextInt();
}


如上代码,如果当用户输入的是int型内容时,那么执行到a = in.nextInt()虚拟机就不会要求在控制台上再次输入。
2.只能执行一次检测,如需再次执行检测只能进行再次实例化,否则返回的值永远是false。(重难点)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个数");
int a = 0;
while (!in.hasNextInt()) {
System.out.print("请重新输入整数:");
}
a = in.nextInt();
}


如上代码,所以当用户输入的内容是非int型时,那么执行到hasNextInt()时,它就永远返回false,就会陷入死循环。
如果要达到正常使用的话,那么就只能对in对象进行再次实例化操作,如下代码:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
 System.out.println("请输入一个数");
 int a = 0;
 while (!in.hasNextInt()) {
System.out.print("请重新输入整数:");
in = new Scanner(System.in);// 重新实例化
a = in.nextInt();
}
}


当然,实例化的另一种办法就是给in对象再次赋值,如下代码:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
 System.out.println("请输入一个数");
 int a = 0;
 while (!in.hasNextInt()) {
System.out.print("请重新输入整数:");
in.next();// 重新输入就是给对象开辟了一块新的地址,和实例化效果一样。
a = in.nextInt();
}
}

最新喜欢:

doubleyongdouble...
https://blog.feiyuit.cn
doubleyong
管理员
管理员
  • 最后登录2025-04-01
  • 发帖数1197
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2016-05-09 10:01
楼主分析的太透彻了,32个赞
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号