Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串数组将字符串转换为整数_Java_Arrays_String_Token_Parseint - Fatal编程技术网

Java 从字符串数组将字符串转换为整数

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

我正在尝试使用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"

知道我可能遗漏了什么吗?

您需要在拆分之前删除引号。由于引号的原因,它无法将数字转换为实际数字

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