黑马程序员技术交流社区
标题:
输入字符串转10进制问题
[打印本页]
作者:
李厚斌
时间:
2014-4-4 19:53
标题:
输入字符串转10进制问题
本帖最后由 李厚斌 于 2014-4-7 10:57 编辑
public static int transTen(String str){
String[] myStr={"a","b","c","d","e","f"};
int result=0;
int n=1;
for(int i=str.length()-1;i>=0;i--){
String param=str.substring(i,i+1);
for(int j=0;j<myStr.length;j++){
if(param.equalsIgnoreCase(myStr[j])){
param="1"+j;
break;
}
}
result+=Integer.parseInt(param)*n;
System.out.println(result);
n*=16;
}
return result;
}
复制代码
当超过FFFFFFFF之后一直是-1.。我想做成
parseInt
(
String
s, 16) 这种。。超过会有错误抛出。。怎么弄啊??
作者:
chen_x
时间:
2014-4-5 09:41
可以用正则表达式匹配transTen的字符串参数,如果不匹配就抛出异常,正则表达式用“[0-9a-f]{8}”就行
public class Test {
public static void main(String[] args) {
System.out.println(trans("fffffffff"));
}
public static int trans(String str){
String regex="[0-9a-f]{8}";
if(str.matches(regex)){
return transTen(str);
}else{
throw new RuntimeException("输入的字符串不合法,请重新输入");
}
}
public static int transTen(String str){
String[] myStr={"a","b","c","d","e","f"};
int result=0;
int n=1;
for(int i=str.length()-1;i>=0;i--){
String param=str.substring(i,i+1);
for(int j=0;j<myStr.length;j++){
if(param.equalsIgnoreCase(myStr[j])){
param="1"+j;
break;
}
}
result+=Integer.parseInt(param)*n;
//System.out.println(result);
n*=16;
}
return result;
}
}
复制代码
输入不合法字符串时运行结果是:
Exception in thread "main" java.lang.RuntimeException: 输入的字符串不合法,请重新输入
at Test.trans(Test.java:13)
at Test.main(Test.java:6)
复制代码
作者:
枫儿
时间:
2014-4-7 10:56
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
作者:
冷月
时间:
2014-4-7 11:47
搞定了吧 不难哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2