A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jagon 中级黑马   /  2014-3-20 09:05  /  1241 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jagon 于 2014-3-20 13:04 编辑

public class TestDemo {
    public static void main(String[] args) throws Exception {
        String str = " 13412a 4124214141232" ;
        if (isNumber(str)) {
            System.out.println("是由数字所组成!");
        } else {
            System.out.println("不是由数字所组成!");
        }
    }
    public static boolean isNumber(String data) {
        char arr [] = data.toCharArray() ;  // 字符串变为字符数组
        for (int x = 0; x < arr.length; x++) {
            if (arr[x] < 0 || arr[x] > 9) {
                return false ;
            }
        }
        return true ;
    }
}

判断一个字符串是否由数字组成,代码写完了,可怎么比较不了,为什么啊?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
  if (arr[x] < '0' || arr[x] > '9')

                return false ;
回复 使用道具 举报
再试试:
  1. public class TestDemo {
  2.     public static void main(String[] args) throws Exception {
  3.         String str = "13412a 4124214141232" ;
  4.         if (isNumber(str)) {
  5.             System.out.println("是由数字所组成!");
  6.         } else {
  7.             System.out.println("不是由数字所组成!");
  8.         }
  9.     }
  10.     public static boolean isNumber(String data) {
  11.         char arr [] = data.toCharArray() ;  // 字符串变为字符数组
  12.         for (int x = 0; x < arr.length; x++) {
  13.             if (arr[x] < '0' || arr[x] > '9') {
  14.                 return false ;
  15.             }
  16.         }
  17.         return true ;
  18.     }
  19. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
以后记住,字符串比较不能不加' '
  1.     public class TestDemo {
  2.         public static void main(String[] args) throws Exception {
  3.             String str = "13412a 4124214141232" ;
  4.             if (isNumber(str)) {
  5.                 System.out.println("是由数字所组成!");
  6.             } else {
  7.                 System.out.println("不是由数字所组成!");
  8.             }
  9.         }
  10.         public static boolean isNumber(String data) {
  11.             char arr [] = data.toCharArray() ;  // 字符串变为字符数组
  12.             for (int x = 0; x < arr.length; x++) {
  13.                 if (arr[x] < '0' || arr[x] > '9') {
  14. //上面必须用'',不然就是比较数字int类型的了
  15.                     return false ;
  16.                 }
  17.             }
  18.             return true ;
  19.         }
  20.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
  1. public class TestMain {

  2.         public static void main(String[] args) {
  3.                
  4.                 System.out.println((int)'0' );
  5.                 System.out.println((int)'9' );
  6.                
  7.                
  8.         }

  9. }
  10. /*
  11. result:
  12. 48
  13. 57
  14. */
复制代码

'0'和'9'直接转换成int是对应48和57.
‘0’和0对比的时候是char和int对比,自动会转换成int。
所以就等价于48和0对比。当然不相等啦

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 my_android_drea 于 2014-3-20 14:19 编辑

if (arr[x] < 0 || arr[x] > 9) {                 return false ;  }        你这里的 0 和 9 不加单撇号就是把 字符的ASCII码的十进制代码和0  9(int)比较了(ASCII码十进制代码比9大的多了去了),当然判断不了啦

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马