我试图使用parseInt()将一些字符串从数组转换为整数。我正在阅读许多单独的文件中的行,如下所示:
car,house,548544587,645871266
我有类似下面的代码:
String [] tokens = line.split(",");
try {
line = line.trim();
int a = Integer.parseInt(tokens[2]);
int b = Integer.parseInt(tokens[3]);
int c = (b - a);
System.out.println(c);
} catch (NumberFormatException e) {
System.out.println(e);
}
但对于我读到的每一行,这都会失败并出现这样的错误:
java.lang.NumberFormatException: For input string: "548544587"
java.lang.NumberFormatException: For input string: "645871266"
知道我可能缺少什么吗?
答案 0 :(得分:5)
您需要在拆分前删除引号。由于引号,它无法将"number"
转换为实际数字。
String line = "\"car\",\"house\",\"548544587\",\"645871266\"";
String[] tokens = line.replace("\"", "").split(",");
try {
int a = Integer.parseInt(tokens[2]);
int b = Integer.parseInt(tokens[3]);
int c = (b - a);
System.out.println(c);
} catch (NumberFormatException e) {
System.out.println(e);
}
<强>输出:强>
97326679
答案 1 :(得分:0)
对String
使用line
不会对我产生错误,因此必须与您从文件中读取的内容相关联。另外值得注意的是,你修剪了行,但不是tokens
中的每个元素。尝试修剪每个元素,例如int a = Integer.parseInt(tokens[2].trim());
。此外,您可能会收到回车字符,例如\n
和/或\r
,因此请尝试替换拆分前的字符,例如String[] tokens = line.replaceAll("\\n", "").replaceAll("\\r", "").split(",");
。希望这会有所帮助。
答案 2 :(得分:0)
public static void main(String[] args) {
// TODO Auto-generated method stub
String line="car,house,548544587,645871266";
String [] tokens = line.split(",");
try {
line = line.trim();
int a = Integer.parseInt(tokens[2].trim());
int b = Integer.parseInt(tokens[3].trim());
System.out.println(a+ " "+b);
int c = (b - a);
System.out.println(c);
} catch (NumberFormatException e) {
System.out.println(e);
}
}
Output;
548544587 645871266
97326679