课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 昆明java:判断后无限循环输出的解决办法
  • 昆明java:判断后无限循环输出的解决办法

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-07

  • 昆明Java培训机构的老师今天给大家讲关于hasNextInt判断后无限循环输出else项的解决办法。

    import java.util.Scanner;

    public class Test_hasNextInt {

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Scanner sc = new Scanner(System.in);           //关于hasNextInt判断后无限循环输出else项的解决办法

    String next;

    int i;

    while(true) {

    //         Scanner sc = new Scanner(System.in);       //第一种处理方法,把扫描器拿到里面来,每次循环都创建一个新的扫描器.else语句里直接提示输入错误就好了

    System.out.println("请输入一个整数");

    if (sc.hasNextInt()) { //如果通过使用nextInt()方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个int值,则返回true。

    i = sc.nextInt();                      //如果是输入22 33会做两次输出

    System.out.println(i);

    } else {

    //             next = sc.next();                      //第二种处理方法,把scanner缓存里的非int值接收掉

    //             System.out.println("您输入的是:" + next + ",请重新输入");

    //注意:next()查找并返回来自此扫描器的下一个完整标记例如输入: aa bb cc那么这里会先接收aa ,然后输出aa

    //然后再while()循环,遇到if判断缓存里的bb确定不是整数后继续走else语句输出bb.同理输出完cc才会停止

    //如果输入的是aa 22 cc,那么先走else输出aa,再判断出是22是整数走if语句,走完再次走cc才能结束

    String nextLine = sc.nextLine();       //第三种处理方法,算了还是接收一行吧!

    System.out.println(nextLine);          //如果输入22 aaa 333 ccc第一次会走if把22接收掉,

    //然后遇到aaa后走esls会把后面的整行都接收掉

    //当然,正常情况下没有sc.hasNextInt()这一个判断的时候,

    //nextLine()会把整行都接收掉,而这里是因为被上面的nextInt()拿走了一个22

    //所以还是看需要把.第一种虽然每次输入都会创建一次Scanner对象,但是也算是一种合理的解决办法!

    //总结:理解缓存,就会明白了!

    }

    }

    }

    }

    学Java开发就到昆明达内Java培训班!了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:java程序员:SpringIOC使用扩展

下一篇:java对xml节点属性的增删改查

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56