Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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,我将一个文件逐行扫描到ArrayList中。 然后我创建一个新的ArrayList,我想在其中临时存储该行,以便访问某些值 例如IDname(制表符)IDnumber(制表符)投票(制表符)日期 因此,我创建了名为voteSubmission的临时ArrayList,并遍历fileRead数组中的每个字符串 为什么我的拆分方法会得到错误不兼容的类型? ArrayList<String> voteSubmission = new ArrayList<String>();

我将一个文件逐行扫描到ArrayList中。 然后我创建一个新的ArrayList,我想在其中临时存储该行,以便访问某些值

例如IDname(制表符)IDnumber(制表符)投票(制表符)日期

因此,我创建了名为voteSubmission的临时ArrayList,并遍历fileRead数组中的每个字符串

为什么我的拆分方法会得到错误不兼容的类型?

ArrayList<String> voteSubmission = new ArrayList<String>(); 
for(String x : fileRead)
{
voteSubmission =  x.split("\t");
}
ArrayList voteSubmission=new ArrayList();
for(字符串x:fileRead)
{
voteSubmission=x.split(“\t”);
}
返回一个数组,而不是
数组列表


使用数组或手动将其转换为
ArrayList

错误是:
类型不匹配:无法从字符串[]转换为ArrayList

这意味着
x.split(“\t”)
提供了一个
String[]
数组,但您将其分配给
ArrayList

如果要将其转换为ArrayList,必须将其转换为:

new ArrayList<String>(Arrays.asList(x.split("\t")));
ArrayList<String[]> voteSubmission = new ArrayList<String[]>(); 
for(String x : fileRead){
  voteSubmission.add((x.split("\t")));
}
ArrayList<String> voteSubmission = new ArrayList<String>(); 
    for(String x : fileRead)
    {
        for(String value: x.split("\t"))
        {
            voteSubmission.add(value);
        }
    }
newarraylist(Arrays.asList(x.split(“\t”));
但是,由于您是在循环中执行此操作,因此很可能希望将所有数组存储在ArrayList中。为此,必须创建String[]类型的ArrayList,如下所示:

new ArrayList<String>(Arrays.asList(x.split("\t")));
ArrayList<String[]> voteSubmission = new ArrayList<String[]>(); 
for(String x : fileRead){
  voteSubmission.add((x.split("\t")));
}
ArrayList<String> voteSubmission = new ArrayList<String>(); 
    for(String x : fileRead)
    {
        for(String value: x.split("\t"))
        {
            voteSubmission.add(value);
        }
    }
ArrayList voteSubmission=new ArrayList();
for(字符串x:fileRead){
添加((x.split(“\t”));
}
x.split(“\t”)此函数将返回数组而不是数组列表

该函数声明:

围绕给定正则表达式的匹配项拆分此字符串

此方法的工作方式类似于通过调用具有 给定的表达式和零的极限参数。尾随空 因此,结果数组中不包括字符串

返回:

ArrayList<String> voteSubmission = new ArrayList<String>(); 
for(String x : fileRead)
{
voteSubmission =  x.split("\t");
}
通过围绕匹配项拆分此字符串计算的字符串数组 给定正则表达式的

您可以尝试如下方式更改代码:

new ArrayList<String>(Arrays.asList(x.split("\t")));
ArrayList<String[]> voteSubmission = new ArrayList<String[]>(); 
for(String x : fileRead){
  voteSubmission.add((x.split("\t")));
}
ArrayList<String> voteSubmission = new ArrayList<String>(); 
    for(String x : fileRead)
    {
        for(String value: x.split("\t"))
        {
            voteSubmission.add(value);
        }
    }
ArrayList voteSubmission=new ArrayList();
for(字符串x:fileRead)
{
用于(字符串值:x.split(“\t”))
{
增值;
}
}
split()的输出类型为string[]array,您正试图分配给ArrayList类型,该类型不兼容

将代码更改为

ArrayList<String> voteSubmission = new ArrayList<String>(); 
    for(String x : fileRead)
    {
        String arr[] = x.split("\t");
        if(arr != null && arr.length > 0)
        {
           for(String value: arr)
           {
              voteSubmission.add(value);
           }
        }
    }
ArrayList voteSubmission=new ArrayList();
for(字符串x:fileRead)
{
字符串arr[]=x.split(“\t”);
如果(arr!=null&&arr.length>0)
{
for(字符串值:arr)
{
增值;
}
}
}