首页 新闻 搜索 专区 学院

java Scanner用法

0
悬赏园豆:5 [已解决问题] 解决于 2012-08-07 15:51

import java.util.Scanner;

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

  Scanner sc = new Scanner(System.in);
  float f = 0;
  while (true) {
   try {
    System.out.println("请输入第一个数字:");
    f = sc.nextFloat();
    break;
   } catch (Exception ex) {
    System.out.print("对不起,您的输入不正确");
    sc.next();//!!!就是这个

   }

  }
 }
}

 

声明:我是菜鸟  求大神帮助 分不多了  不好意思

如果输入的不是float就会发生异常  catch捕获

但是下次循环式  sc.nextFloat()还是原来的错误值  导致死循环

为什么最后catch要加个sc.next();就可以避免那种情况

否则就会造成死循环 也就是好像是sc里的值得不到释放那种 

因为我在catch里如果输出sc.next()的话,会输出之前的错误的值

求大神帮助

mornsnow的主页 mornsnow | 初学一级 | 园豆:197
提问于:2012-08-06 22:04
< >
分享
最佳答案
0

sc.next();//!!!就是这个

指针下移一位,不然while总是true啊,移到最后就返回false了。所以就跳出while了。

http://zhidao.baidu.com/question/162183888.html?push=ql

收获园豆:5
悟行 | 专家六级 |园豆:12371 | 2012-08-07 09:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册