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

Java 字符串拆分方法不会返回两个字符串

Java 字符串拆分方法不会返回两个字符串,java,string,split,Java,String,Split,为什么split方法不返回包含2个元素的数组 for(int i = 0; i < temparray.size(); i++) { if (temparray.get(i).contains("_")) System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i)); String[] temp = temparray.get(i).split("_"); System.out.pri

为什么split方法不返回包含2个元素的数组

for(int i = 0; i < temparray.size(); i++)
{
if (temparray.get(i).contains("_"))
    System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
String[] temp = temparray.get(i).split("_");
System.out.println(temp[0]);
//System.out.println(temp[1]);
//friendsOld.add(new Friend(temp[0],temp[1]));
}
for(int i=0;i
如果我取消对其中任何一行的注释,我会得到
ArrayOutofBoundsException:1
。println总是返回True,即字符串的长度,然后返回一个位于字符串中的
\uuu
字符串,而不是在字符串的末尾


我尝试了
.split()
的负参数,将字符串转换为字符数组,并使用
indexOf()
来断开字符串,以查找
\uu
的位置,然后使用
substring()
手动拆分它。字符串本身可能有问题,但下面是字符串数组的代码:
ArrayList temparray=new ArrayList()

似乎您忘记了if语句后面的大括号:

if (temparray.get(i).contains("_")) {
    System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
    String[] temp = temparray.get(i).split("_");
    System.out.println(temp[0]);
    System.out.println(temp[1]);
    friendsOld.add(new Friend(temp[0],temp[1]));
}
按照您编写的方式,即使字符串不包含下划线,也会将其拆分。只有“True[…]”的输出仅限于包含一个字符串的字符串


您应该开始使用调试器-当遇到异常断点时,调试器将显示变量的值,允许您进一步跟踪代码中的错误。

您的意思是将所有代码放在大括号中吗

for(int i = 0; i < temparray.size(); i++)
{
    if (temparray.get(i).contains("_")) {
        System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
        String[] temp = temparray.get(i).split("_");
        System.out.println(temp[0]);
        //System.out.println(temp[1]);
        //friendsOld.add(new Friend(temp[0],temp[1]));
    }
}
for(int i=0;i
您的if条件仅适用于下一行。因此,如果temparray.get(i)不包含“\u1”,则只能从split中获得一个结果。

temparray.get(i)中存储的确切字符串值是多少?您将代码应用于哪个字符串?向我们展示一些例子,以便更容易帮助您找到解决方案。正如其他人已经提到的:您可能忘记了一些大括号。但也要注意,后面的空字符串不包括在内,因此字符串“foo_”也将只返回一个元素,即使它包含分隔符(请参见:)这里有一些示例:Yarko Berlinh_40656411 Joseph Nguyen_52233247 Johan Cheah_72681788@AmitBhargava@JoachimRohde,
\u
从不在末尾,因此尾随字符串不是空的。对吗?我不想让它戴牙套。if语句只是为了确保字符串对于“拆分”是有效的。
temparray
的每个元素对于
contains()
返回True。是否确实每个元素都包含和下划线(而不仅仅是打印到控制台的元素)?在哪个元素上发生异常?您的评论让我意识到了一些事情,并且在添加另一个
inStream.readLine()时它工作正常。我先读错了一行,一行一行。谢谢。我不想让它戴牙套。if语句只是为了确保字符串对于“拆分”是有效的。
temparray
的每个元素对于
contains()
返回True。