CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  非技术区

如何检验输入的是不是数字

楼主jzzc001()2006-11-04 16:23:36 在 Java / 非技术区 提问

public   class   Alone12_3{  
    static   boolean   isNumberic(String   num){  
    //这里插入代码  
    public   static   void   main(String[]   args){  
      System.out.println(isNumberic("123"));  
      System.out.println(isNumberic("-123.45"));  
      System.out.println(isNumberic("0x12"));  
      System.out.println(isNumberic("1abc"));  
      System.out.println(isNumberic("-1a33"));  
    }  
  }  
   
  尝试了很久都没搞清楚~希望高手指点 问题点数:50、回复次数:8Top

1 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-04 16:39:03 得分 0

最简单的办法  
  try   {  
          int   n   =   Integer.parse(s);  
          return   true;  
  }   catch   (NumberFormatException   e)   {  
          return   false;  
  }  
   
  当然你也可以用正则表达式。  
   
  或者通过Character.isDigit来逐字判断。当然这种情况下你要自己判断第一个字母是不是负号。Top

2 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-04 16:47:21 得分 0

如果用正则表达式:  
   
  import   java.util.regex.*;  
   
  ....  
  return   java.util.regex.Pattern.matches("^-{0,1}\\d+$",   num);  
  Top

3 楼jzzc001()回复于 2006-11-04 16:57:38 得分 0

你的方法只可以检验第1个是true~其他的都是flase,不只要检验Int类型的还要检验long,double,还有进制的数~~望高手再次指点~先谢了Top

4 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-04 17:06:14 得分 50

我只是一个示例,把多几类似的方法组合起来就可以检查这些数了。如果是0x开始的,就用Integer.parseInt(s,   16)来转换。  
   
  当然,用正则表达式的情况就好办得多:  
   
  import   java.util.regex.*;  
   
  public   class   Test   {  
   
          public   static   boolean   isNumberic(String   s)   {  
                  if   (Pattern.matches("^-{0,1}\\d*\\.{0,1}\\d+$",   s))   {  
                          return   true;  
                  }  
                  if   (Pattern.matches("^0[x|X][\\da-eA-E]+$",   s))   {  
                          return   true;  
                  }  
   
                  return   false;  
          }  
          public   static   void   main(String[]   args)   {  
                  System.out.println(isNumberic("123"));  
                  System.out.println(isNumberic("-123.45"));  
                  System.out.println(isNumberic("0x12A"));  
                  System.out.println(isNumberic("1abc"));  
                  System.out.println(isNumberic("-1a33"));  
          }  
  }Top

5 楼jzzc001()回复于 2006-11-04 19:33:11 得分 0

真的是谢谢!!!!!Top

6 楼jzzc001()回复于 2006-11-04 19:36:57 得分 0

如果用Integer.parseInt(num)的方法是不是会复杂一点~~有时间的话请帮我用这个方法写一下好吗Top

7 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-05 00:10:36 得分 0

如果只是判断,用   Double.parseDouble()   方法就可以了,这个可以包含正/负、整数/小数等情况。只是有0x前缀的时候要判断一下。Top

8 楼jzzc001()回复于 2006-11-06 13:37:29 得分 0

高手!!!谢谢Top

相关问题

关键词

得分解答快速导航

  • 帖主:jzzc001
  • jamesfancy

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo