编写一个函数求JAVA字符串转换成整型的方法

老师给出了一道题
是叫我们编写一个方法,当调用这个方法的时候来实现字符串转换成int 型,
就是不能用现成地 parseInt 方法。。。

在线等答案,, 希望认识些JAVA高手, 本人才接触JAVA

基本上就是先检测空指针、空字符串和整数格式错误,然后提取符号,最后逐数转换(同时检测是否超出 int 的范围)。

空字符串和整数格式错误的检测若用正则表达式会很简洁;逐数转换方面应该用 Character 类的 digit 方法。比如:

class C {
static int stringToInt(String s) {
if (s == null || ! s.matches("[+-]?\\\\d+"))
throw new NumberFormatException("指针或字符串为空,或整数格式有误");

// 记下符号后再去掉
boolean negative = s.charAt(0) == '-' ? true : false;
s = s.replaceFirst("[+-]", "");

// 记下 int 的绝对上限,然后进行转换
long limit = negative ? -(long)Integer.MIN_VALUE: Integer.MAX_VALUE,
magnitude = 0;
for (char c: s.toCharArray()) {
magnitude = magnitude * 10 + Character.digit(c, 10);
if (magnitude > limit)
throw new NumberFormatException("数值超出 int 的范围");
}

return (int)(negative ? -magnitude : magnitude);
}

public static void main(String[] args) {
// 测试
String[] cases =
" + *5 12.3 -2147483649 -2147483648 -2 -0 +0 9 2147483647 2147483648".split(" ");
cases[0] = null;
for (String s: cases)
try {
System.out.printf("stringToInt(%s) %n", s == null ? null : '"' + s + '"');
System.out.println("\\t\\t\\t 返回:" + stringToInt(s));
} catch (NumberFormatException e) {
System.out.println("\\t 抛出:" + e);
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-25
public static int toInt(String strNum) {
return null == strNum || "".equals(strNum) ? 0 : Integer.valueOf(strNum);
}
没用parstInt吧。

Java 如何将String转化为Int
atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str);【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\\0')才结束...

java中,String字符串转化为数字
1、转化为整型数字 (1)Integer.parseInt(String s) ,代码示例如下:public class Test { public static void main(String args[]){ String s = "123";int num = Integer.parseInt(str);int sum = num + 100;System.out.println("Result is: "+sum); \/\/ 输出结果为:Result is: 223 }...

在JAVA中怎么把字符串 "123" 转换成整型123
直接调用Integer类中的静态方法parseInt(String str)就可以了,返回整型。

Java:字符串(String)类型转成整型(int)的方法
无论字符串代表的位置数或负数,转换逻辑均相同。在Integer.java源代码中,这两个方法使用相同的签名进行转换,即使用parseInt(s,10)进行转换。然而,它们返回的结果不同。输出:使用Integer.parseInt()时,示例将字符串"999"转换为原始类型int。输出:使用Integer.valueOf()时,示例将字符串"123"转换为...

...转换为整型?如果我想把“a”这个字符串转换成整型要怎么做?_百度知 ...
int a = 'a';那么整形a所代表的就是字符‘a’的ASCII码。字符串转字符的话可以用String的toCharArray() 方法。希望对你有帮助!

java中如何将一个无限大的字符串转化为整型
具体方法是:首先要导入java.math包,方法为import java.math.BigInteger;其次要定义BigInteger对象,方法为 BigInteger big1 = new BigInteger("要操作的那个无限大的数字"). 以上便将一个无限大的数字转变成了整型。当然你可以定义第二个BigInteger对象,这样就可以把第二个无限大的数字转变成...

java中如何将一个无限大的字符串转化为整型
既然是将一个无限大的字符串转变成一个整型,那么这个字符串肯定是由数字组成的字符串。在Java中如果一个数字大到不能再大的时候就可以考虑使用大数操作了。在java.math包中有一个BigInteger类,此类的作用便是将非常大的数字进行大数操作。具体方法是:首先要导入java.math包,方法为import java.math....

java怎么把字符串转变为整型
应该在循环中提取元素值的时候出错的。换个方式从person对象提取元素值,你干脆用elementText试试,格式按你的方式转换一下就变成要的int型了。

java中怎么把字符串转成长整型?
超过 int 类型的数字,可以使用 long型 表示。long number = Long.parseLong("2147483648");

...不多于6位的表示整数的字符串,把它转换成整型的数,加一输出;把_百度...
String snum = input.next();if(snum.length>6) { println("对不起,请输入一个不多于6位的数字");}else { int num = Integer.parseInt(snum);System.out.println("得到的结果为:"+double (num\/10));} } 好久没写了,也没有工具测试,,大体思路是这样的,,自己再好好解决一下吧。

相似回答