Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 - Fatal编程技术网

Java 如何从逗号分隔的文本中获取整数

Java 如何从逗号分隔的文本中获取整数,java,Java,我有一个只包含整数的文本流,每个整数用逗号分隔。 以下是我的一个例子: String text="143,136,159,140"; 我需要一个接一个地提取每个数字。 我试过类似的东西 int placeHolder=0; for(int i=0;i<text.length();i++) { if(text.charAt(i)==',') { System.out.println(text.substring(placeHolder,

我有一个只包含整数的文本流,每个整数用逗号分隔。 以下是我的一个例子:

String text="143,136,159,140";
我需要一个接一个地提取每个数字。 我试过类似的东西

int placeHolder=0;
for(int i=0;i<text.length();i++) {
    if(text.charAt(i)==',') 
    {
        System.out.println(text.substring(placeHolder,i));
        placeHolder=i+1;
    }
}
但我得到的却是:

143
136
159
我无法获得最后一个。我做错了什么

您可以像这样使用拆分(“,”):

    String[] numbers = text.split(",");
    for (String number : numbers) {
        System.out.println(number);
    }

使用streams,我们可以尝试:

String text = "143,136,159,140";
List<Integer> nums = Arrays.stream(text.split(","))
                            .map(Integer::valueOf)
                            .collect(Collectors.toList());
String text=“143136159140”;
List nums=Arrays.stream(text.split(“,”))
.map(整数::valueOf)
.collect(Collectors.toList());

您编码时不打印最后一个数字,因为您只在找到
时打印。所以对于最后一个数字,你什么都不做。 您需要在for循环后添加此行以打印最后一个数字

System.out.println(text.substring(placeHolder));
相反,您可以尝试这种方式在循环内部打印

int placeHolder=0;
for(int i=0;i<text.length();i++) {
    if(i == text.length()-1 || text.charAt(i+1)==',' ) 
    {
        System.out.println(text.substring(placeHolder,i+1));
        placeHolder=i+2;
    }

}

因为,代码会检查“,”并在其前面打印整数。但最后一个整数后没有',,因此不会打印。相反,使用
text.split(“,”)

查看字符串中的split方法,如split(“,”)您当前的代码不会在行尾触发,因为没有commathank you这么多供您评论。这让我非常高兴来到这里,感谢您的贡献。我将把这些整数逐个放到函数中。因此,如果我不想存储数字,我将使用上一个循环,谢谢您的回答
int placeHolder=0;
for(int i=0;i<text.length();i++) {
    if(i == text.length()-1 || text.charAt(i+1)==',' ) 
    {
        System.out.println(text.substring(placeHolder,i+1));
        placeHolder=i+2;
    }

}
String[] nums = text.split(",");
for (String num : nums) {
    System.out.println(num);
}