Java 从字符串数组将字符串转换为整数
我正在尝试使用parseInt将一些字符串从数组转换为整数。我正在阅读许多单独文件中的行,这些文件如下所示:Java 从字符串数组将字符串转换为整数,java,arrays,string,token,parseint,Java,Arrays,String,Token,Parseint,我正在尝试使用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
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"
知道我可能遗漏了什么吗?您需要在拆分之前删除引号。由于引号的原因,它无法将数字转换为实际数字
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);
}
输出:
您需要在拆分之前删除引号。由于引号的原因,它无法将数字转换为实际数字
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);
}
输出:
对行使用字符串不会产生错误,所以它必须与您从文件中读取的内容相关联。同样值得注意的是,您修剪了行,但没有修剪令牌中的每个元素。尝试修剪每个元素,例如int a=Integer.parseInttokens[2].trim;。此外,您可能会得到像\n和/或\r这样的回车字符,因此请尝试替换拆分之前的字符,例如String[]tokens=line.replaceAll\\n、.replaceAll\\r、.split、,;。希望这有帮助。使用字符串作为行不会对我产生错误,因此它必须与您从文件中读取的内容相关联。同样值得注意的是,您修剪了行,但没有修剪令牌中的每个元素。尝试修剪每个元素,例如int a=Integer.parseInttokens[2].trim;。此外,您可能会得到像\n和/或\r这样的回车字符,因此请尝试替换拆分之前的字符,例如String[]tokens=line.replaceAll\\n、.replaceAll\\r、.split、,;。希望这能有所帮助。对不起,我读到的行示例有误。它实际上不包括任何引用。我更新了我原来的帖子来展示这一点。这就是为什么这让我难堪…@gppanter我认为这是一个重大的更新。。您是否尝试过以下字符串[]tokens=line.trim.split@gppanter为什么一开始就没有问这个问题?我也尝试过,但是抛出了相同的异常。首先修剪似乎没有帮助。拆分int后修剪a=Integer.parseInttokens[2]。修剪;对不起,我读到的行示例有误。它实际上不包括任何引用。我更新了我原来的帖子来展示这一点。这就是为什么这让我难堪…@gppanter我认为这是一个重大的更新。。您是否尝试过以下字符串[]tokens=line.trim.split@gppanter为什么一开始就没有问这个问题?我也尝试过,但是抛出了相同的异常。首先修剪似乎没有帮助。拆分int后修剪a=Integer.parseInttokens[2]。修剪;嗯,那也没用…我以为会的!但有趣的是,如果我将行改为使用“floats”,它就可以工作了,因为它返回了一个整数。这非常有趣。接下来我要做的是检查令牌中的每个字符,这可能会导致错误。char[]aa=tokens[2].trim.tocharray;forchar c:aa{System.out.printc+;System.out.printlinteger.parseInt+c;},但这正是我要做的。嗯,这也没用……我想会的!但有趣的是,如果我将行改为使用“floats”,它就可以工作了,因为它返回了一个整数。这非常有趣。接下来我要做的是检查令牌中的每个字符,这可能会导致错误。char[]aa=tokens[2].trim.tocharray;forcharc:aa{System.out.printc+;System.out.printlinteger.parseInt+c;},但这正是我要做的。
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