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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李厚斌 中级黑马   /  2014-4-4 19:53  /  1137 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李厚斌 于 2014-4-7 10:57 编辑
  1. public static int transTen(String str){
  2.                 String[] myStr={"a","b","c","d","e","f"};
  3.                 int result=0;
  4.                 int n=1;
  5.                 for(int i=str.length()-1;i>=0;i--){
  6.                         String param=str.substring(i,i+1);
  7.                         for(int j=0;j<myStr.length;j++){
  8.                                 if(param.equalsIgnoreCase(myStr[j])){
  9.                                         param="1"+j;
  10.                                         break;
  11.                                 }
  12.                         }
  13.                         result+=Integer.parseInt(param)*n;
  14.                         System.out.println(result);
  15.                         n*=16;
  16.                 }
  17.                 return result;
  18.         }
复制代码
当超过FFFFFFFF之后一直是-1.。我想做成parseInt(String s, 16)  这种。。超过会有错误抛出。。怎么弄啊??

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
可以用正则表达式匹配transTen的字符串参数,如果不匹配就抛出异常,正则表达式用“[0-9a-f]{8}”就行

  1. public class Test {

  2.         public static void main(String[] args) {
  3.                  System.out.println(trans("fffffffff"));
  4.         }
  5.         public static int trans(String str){
  6.                 String regex="[0-9a-f]{8}";
  7.                 if(str.matches(regex)){
  8.                         return transTen(str);
  9.                 }else{
  10.                         throw new RuntimeException("输入的字符串不合法,请重新输入");
  11.                 }
  12.         }
  13.         public static int transTen(String str){
  14.         String[] myStr={"a","b","c","d","e","f"};
  15.         int result=0;
  16.         int n=1;
  17.         for(int i=str.length()-1;i>=0;i--){
  18.                 String param=str.substring(i,i+1);
  19.                 for(int j=0;j<myStr.length;j++){
  20.                         if(param.equalsIgnoreCase(myStr[j])){
  21.                                 param="1"+j;
  22.                                 break;
  23.                         }
  24.                 }
  25.                 result+=Integer.parseInt(param)*n;
  26.                 //System.out.println(result);
  27.                 n*=16;
  28.         }
  29.         return result;
  30. }

  31. }
复制代码

输入不合法字符串时运行结果是:
  1. Exception in thread "main" java.lang.RuntimeException: 输入的字符串不合法,请重新输入
  2.         at Test.trans(Test.java:13)
  3.         at Test.main(Test.java:6)
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
回复 使用道具 举报
搞定了吧   不难哦  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马