System.out.println("输入:");
//String num1 = sc.next();
  /* while(!num1.matches("\\d+"))
   {
   System.out.println("输入的不是数字,请重新输入");
   num1 = sc.next();;
   }
   System.out.println("你好!");
    */
第2个
if(sc.hasNextInt()==true)
{
int j=sc.nextInt();
}
else
{
    System.out.println("输入错误!!!");
}他们都是可以判断 是否为数字! 那他们的区别在与那里 ??本人刚开始学JAVA 有很多不懂的地方需要大家帮助 谢谢!

解决方案 »

  1.   

    System.out.println("输入:"); 
    String num1 = sc.next();
    while(!num1.matches("\\d+"))
    {
    System.out.println("输入的不是数字,请重新输入");
    num1 = sc.next();;
    }
    System.out.println("你好!");第2个
    if(sc.hasNextInt()==true)
    {
    int j=sc.nextInt();
    }
    else
    {
    System.out.println("输入错误!!!");
    }
     
      

  2.   

    第一个是循环判断:num1 = sc.next();直到得到符合全部是数字的字符串结束。
    得到的num1全是数字。不限定数字的个数。第二个;
    只是一个if判断,如果输入的字符串不能转化为int,则输出"输入错误!!!"
    能转化为int 就获取int 出来。
    但是如果你输入的数字超过Interger的范围,也收不到。
      

  3.   

    如果是\d* 的话是表示没有或者多个吧。
    建议去看看Pattern和Matcher
      

  4.   

    不对哦 \\d+ 表示有一个或者 N 个数字!但是 Java 中的 int 最多只有 10 位数字,因此,这种判断是不正确的。PS:这个还没有考虑负数!建议使用:try {
       Integer.parseInt(input);
       return true;
    } catch (Exception e) {
       return false;
    }
      

  5.   

    try
    {
    Integer.parseInt(input);// 是把input转int类型是吗?转后再判断返回直是否为真 是吗?
    return true; //真
    }
    catch (Exception e)  //不懂什么意思?E代表什么呢?求详解 谢谢!
    {
    return false;//假
    }
      

  6.   

    不是返回值,是判断有没有NumberFormatException,就是Integer.parseInt(input);这句能不能执行成功,如果不能执行异常。try catch (Exception e)捕获异常