关于java输入的问题,哪位高手能告诉我下面那个程序中为什么我输入一个整数时,程序一运行就出错了呢?

import java.io.IOException;
public class unite2_7
{
public static void main(String args[]) throws IOException
{

byte b[] = new byte[90];
System.in.read(b);
String a = new String(b);
int c;
c = Integer.parseInt(a);
System.out.println(c);
}
}

哥们,学会查看API很重要。你看下面说的,字符串中的字符必须是十进制数字才能返回得到整数值,你的byte数组能转换成字符串,可以这个字符串里面不一定全部都是数字吧,因此你的字符串变量根部不能使用parseInt(String s)这个方法。你可以尝试下这样来检测下是否还会报错。
import java.io.IOException;
public class Demo
{
public static void main(String args[]) throws IOException
{

byte b[] ={1,2,3,4,5,6};
// System.in.read(b);
String a = "12345" ; //new String(b);
int c;
c = Integer.parseInt(a);
System.out.println(c);
// for (int i = 0;i<b.length ;i++ )
// {
// System.out.println(b[i]);
// }
// System.out.println(a);

}
}

下面是API文档上的信息,你看看!
parseInt
public static int parseInt(String s)
throws NumberFormatException:将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-21
我试了下你写得代码,错误的原因是:
Exception in thread "main" java.lang.NumberFormatException:
对应的就是这行代码有问题,c = Integer.parseInt(a); 在String转化为Integer的过程中出现异常,
原因的a 中含有不可见的字符,导致转换失败,改为这样的就ok的了。C=Integer.parseInt(a.trim()):
trim()方法的作用就是把 a中的不可见的字符去掉。本回答被提问者采纳
第2个回答  2012-07-21
可能是有回车符,你不要转成整型,直接 System.out.println(c.length)试试
第3个回答  2012-07-21
最好把报错信息贴出来
第4个回答  2012-07-21
1
相似回答