Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 [求教]Scanner阻塞问题
puxinye





发贴: 1
积分: 0
于 2008-11-29 15:18 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我用Scanner想取一个Double类型的值,如果输入的不是,则重新输入:
Scanner scan=new Scanner(System.in);
Double doub;
while(true){
System.out.println("Input Something: ");
try{
doub=scan.nextDouble();
break;
}catch(Exception e){
System.out.println("Error!");
continue;
}

}
可是每次输入不对的话(如:输入dkdk),打印出来的是:
Input Something:
dkdk
Error!
Input Something:
Error!
Input Something:
(这里才可以输入)
请问是什么原因?怎么解决?



作者 Re:[求教]Scanner阻塞问题 [Re:puxinye]
micsolaris





发贴: 36
积分: 5
于 2008-11-29 18:48 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
import java.util.Scanner;
public class Test{
  public static void main(String[] args){
    Scanner scan=new Scanner(System.in);
Double doub;
while(true){
System.out.println("Input Something: ");
try{
doub=scan.nextDouble();
break;
}catch(Exception e){
System.out.println("Error!");
scan = new Scanner(System.in);
continue;
}

}

  }
}

这样就可以解决。
原因是每当scan.next()的时候就会跳到新的起点,所以第一次如果不是Double,那么跳到第二点的时候,但是你while里执行的语句并没有要求scan重新赋值,所以自然总会出现异常,所以也就不断循环。




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2018 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号
客服电话 0592-8750026    客服信箱 714923@qq.com    客服QQ 714923