根据Java中的键属性合并两个文件的数据

我有两个数据文件data1.txt和data2.txt。data1.txt由3列和10行组成,而data2.txt由4列和4行组成。


data1.txt的结构是


1.0  1.235   2.3145

2.0  0.325   3.2145

3.0  1.568   4.0215

4.0  0.389   1.2354

7.0  2.054   1.3247

8.0  1.111   2.6570

10.0  1.786   1.2587

11.0  5.628   0.2354

13.0  4.897   1.6542

15.0  1.230   1.0210 

data2.txt的结构是


5.0  .... .... ....

6.0  .... .... .... 

9.0  .... .... ....

12.0 .... .... ....

因此,根据data2.txt中的data1.txt,缺少数据集5.0、6.0。data2.txt中存在的data1.txt中缺少9.0,依此类推。我想在data1.txt中插入那些缺少的值。因此,插入后数据文件的输出将是


数据1.txt


 1.0  1.235   2.3145

 2.0  0.325   3.2145

 3.0  1.568   4.0215

 4.0  0.389   1.2354 

 5.0  .... .... ....

 6.0  .... .... .... 

 7.0  2.054   1.3247

 8.0  1.111   2.6570 

 9.0  .... .... ....

 10.0  1.786   1.2587

 11.0  5.628   0.2354 

 and so on

我的代码就是这样


public class F1 {

public static void main(String args[])throws Exception{

    Scanner X =new Scanner(new File("C:\\data1.txt"));

    Scanner Y =new Scanner(new File("C:\\data2.txt"));

    double a=0.0,b=0.0,c,d=0.0,e=0.0,f,g,h;

    List<Double>list1=new ArrayList<>();

    List<Double>list4=new ArrayList<>();

    double arr[]=new double[10];

    double arr1[]=new double[5];

        while (X.hasNext()) {

            a = X.nextDouble();

            list1.add(a);

            b = X.nextDouble();

            c = X.nextDouble();


        }


        while(Y.hasNext()) {

            d = Y.nextDouble();

            list4.add(d);

            e = Y.nextDouble();


            f = Y.nextDouble();


            g = Y.nextDouble();



        }


    for(int i=0;i<list1.size();i++) {


        arr[i]=list1.get(i);//Store value into an array

        }

        for(int j=0;j<list4.size();j++){

            arr1[j]=list4.get(j);//Store value into an array

        }

        for(int k=0;k<arr.length;k++){

       // Appending condition

        }

}

}


我该如何进行?是否需要任何插入排序或任何if语句进行追加?Printwriter在这里是如何工作的?


LEATH
浏览 158回答 3
3回答

慕神8447489

你的问题对我来说还不清楚。您是否需要数组索引的解决方案?还是您想要合并解决方案。对于超出范围的索引-您可以在数组元素比较逻辑中进行如下检查:for (int k = 0; k < arr.length; k++) {&nbsp; &nbsp; if (k == list4.size() - 1 && arr[k] < arr1[k]) {&nbsp; &nbsp; &nbsp; &nbsp; // error because array dimension mismatch&nbsp; &nbsp; &nbsp; &nbsp; double a1 = 3 + 5; // Any operation&nbsp; &nbsp; }}

开心每一天1111

对于合并,您是否可以将键取为第一位的数字作为地图,并将整个值取为再次的值。例如1.0 1.235 2.3145 1.0作为键,而整个作为Value。现在,您可以根据键对地图进行排序。这将记录排序,您可以进行进一步的计算。这就是你想要的吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java