一个简单的程序和string有关

来源:百度知道 编辑:UC知道 时间:2024/05/24 21:23:34
public class StringMath
{
int intFromString(String s)
{
if(s.indexOf("j")!=-1)
return 0;
int t=Integer.parseInt(s);
return t;
}
public static void main(String arguments[])
{

StringMath sm=new StringMath();
String a = "12";
String b = "90";
String c = "63542";
String d = "1079";
String e = "21j4";
System.out.println(sm.intFromString(a) + sm.intFromString(b));
System.out.println(sm.intFromString(c) + sm.intFromString(d));
System.out.println(sm.intFromString(d) + sm.intFromString(e));
}
}
我做的这个程序没有问题,但是我想问一下,如果要做到,输入的任何数值型字符串都转换成int的数值,如果数值中含有其他的符号,就在int intFromString(String s)这个方法里返回零值,我应该怎么改呢?

Integer.parseInt()转换不成功时会抛出java.lang.NumberFormatException异常,捕获后返回零即可

代码如下:
public int intFromString(String str) {
try {
return Integer.parseInt(str);
} catch (Exception e) {
return 0;
}
}

iridiumcao朋友的方法也不错,但异常不做处理时,即throws,会使程序终止,要不然还要try-catch做什么呢,catch就是捕获到程序出的错误进行处理,不会终止,我的办法很有些取巧就是了,这个方法也是在实际开发中使用的,和做了判断并没有什么不同,IBM工程师写的,我只是抄来用...........

你可以改变你判断的条件,我给你改了一下你看看吧!
public class StringMath {
int intFromString(String s) {
int flag = 1;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
flag=1;
} else {
flag = 0;
break;
}
}
if (flag == 1) {
int t = Integer.parseInt(s);
return t;
} else {
return 0;
}

}

等抛出异常再处理,并不好,异常会导致程序终止。
wdgg4833的办法可行,C语言中经常使用这种方式。
还提供一种方法——使用正则表达式(Regular Expression),个人认为这样代码更少,可读性也好一