Topic: [求教]Scanner阻塞问题

  Print this page

1.[求教]Scanner阻塞问题 Copy to clipboard
Posted by: puxinye
Posted on: 2008-11-29 15:18

我用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:
(这里才可以输入)
请问是什么原因?怎么解决?

2.Re:[求教]Scanner阻塞问题 [Re: puxinye] Copy to clipboard
Posted by: micsolaris
Posted on: 2008-11-29 18:48

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重新赋值,所以自然总会出现异常,所以也就不断循环。


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