0

我有两个带有主键的 csv,我试图将两个键合并,以便我可以将相关的 csv 与正确的键组合在一起,但是现在我只想比较一列中的内容。我的脑子有点空白,我希望通过代码你能弄清楚我前进的方向。我无法让我的数组真正接收字符串。Java.lang.arrayindexoutofboundsexception

import java.io.; import java.util.;

public class UDC { public void search(String [][] wat, String [][] ud){

}


public static void main (String [] args) throws IOException
{
    String [] [] cols = {};
    String [] [] cols1={};
    int row =0;
    int row1 =0;
    int j = 0;


/*Scanner s = new Scanner(new File("Watford Update File.csv"));
Scanner c = new Scanner(new File("udc.csv"));
while (s.hasNextLine()){
    String line = s.nextLine();
    cols =line.split(",");
    System.out.println(cols[0]);*/
    Scanner s = new Scanner(new File("file1.csv"));
    Scanner w = new Scanner (new File("file.csv"));
    while (w.hasNextLine())

    {
        String line1 = w.nextLine();    
        System.out.println(cols);
        //cols[row]=line1.split(",");
        row ++;
        if(!w.hasNextLine()){
        while (s.hasNextLine()){
        String line2 = s.nextLine();
         //cols1[row1]=line2.split(",");
        //put while loop in diffrent method but break


            if(cols[j].equals(cols1[row1]))
            {

                j++;
                row1++;
                System.out.print(cols[j]);
                System.out.print(" ");
                System.out.print(cols1[row1]);
                System.out.println();

            }else{
                row1++;

            }

        }


    }
    }

}

}

4

1 回答 1

3

而不是使用数组 forcolscols1,您应该使用List<String[]>. 此外,您的代码非常混乱,因为比较循环与读取循环交织在一起。最好先简单地读取数据,然后进行比较。

public static void main(String [] args)
{
    List<String[]> cols;
    List<String[]> cols1;
    try {
        cols = readFile("udc.csv");
        cols1 = readFile("Watford Update File.csv");
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
    // loop through array lists to do your comparisons
    // For example, to compare the first column of rows i and j:
    //    cols.get(i)[0].equals(cols1.get(j)[0])
}

private static List<String[]> readFile(String fileName) throws IOException
{
    List<String[]> values = new ArrayList<String[]>();
    Scanner s = new Scanner(new File("udc.csv"));
    while (s.hasNextLine()) {
        String line = s.nextLine();
        values.add(line.split(","));
    }
    return values;
}
于 2012-07-25T16:20:16.010 回答