gpt4 book ai didi

java - 使用扫描仪添加两个文件中的值不起作用

转载 作者:行者123 更新时间:2023-12-02 11:06:22 25 4
gpt4 key购买 nike

我有两个数据文件,Text1_txtText2_txt。这些文件的结构和数据如下。

Text_1.txt:

86.0    1.2356    -0.6325

25.0 1.0512 0.97852

30.0 2.6581 2.25147

18.0 -0.2358 1.5689

90.0 3.5687 -0.8974

88.0 1.9852 -0.1478

70.0 2.0789 -1.2564

87.0 9.2547 1.1120

55.0 -4.1254 1.3611

左侧列是此数据文件中的重要列。假设这是一个身份证号码。在我的程序中,我根据此列创建搜索。

现在是第二个文件 Text_2.txt 的数据:

3.57323240   -3.33283870     2.34080000 

3.57322470 -3.33283680 2.34070000

3.57323800 -3.33286720 2.34080000

3.57324670 -3.33288070 2.34080000

3.57323740 -3.33292520 2.34100000

3.57322660 -3.33292540 2.34110000

3.57318870 -3.33289200 2.34110000

3.57319510 -3.33287860 2.34110000

3.57327090 -3.33284380 2.34070000

这两个文件之间的主要相似之处在于它们具有相同数量的列和行。我的程序是添加这两个文件的值。添加取决于关键属性ID。我的程序中有一个包含 ID 值的数组。我将这些数组值与 Text_1 中的值进行比较。如果 ID 列的值与数组中的 ID 值相同,我会将此行与 Text_2 文件的相应行相加。这意味着 Text_1.txt 的第 4 行与 Text_2.txt 的第 4 行相加。这应该发生在下面的代码中。但是这段代码将 Text_2.txt 第一行的值与 Text1_txt 的所有行相加,但这不是我想要的。

import Jama.Matrix;
import java.io.File;
import java.util.Arrays;
import java.util.Scanner;


public class T5 {
public static void main(String args[])throws Exception{
double arr[]= new double[]{86.0,12.0,55.0,90.0,77.0,22.0,25.0,33.0,45.0,20.0,23.0};// The array with which the value of file Text_1 compare
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
Scanner x= new Scanner(new File("D:\\Text_1.txt"));
Scanner y=new Scanner(new File("D:\\Text_2.txt"));
while(y.hasNext()) {
double x1=y.nextDouble();
double y1=y.nextDouble();
double z1=y.nextDouble();
Matrix ini_x=new Matrix(new double[][]{{x1},{y1},{z1}});
while (x.hasNext()) {
double d = x.nextDouble();
double e = x.nextDouble();
double f = x.nextDouble();
double index = Arrays.binarySearch(arr, d);
if (index >= 0 && index <= arr.length) {
System.out.println("Element within the array" + d);//output those number which are both in array and file
Matrix A = new Matrix(new double[][]{{d}, {e}, {f}});
ini_x.print(9,6);
Matrix c=ini_x.plus(A);// Matrix addition (add the first row of Text_2.txt with all the four rows which found using binarySearch.
c.print(9,6);
}

}
}

}
}

欢迎对此事提出任何建议。提前致谢

最佳答案

也许这就是你想要的......

public static void main(String[] args)
{
double arr[] = new double[]{
86.0,
12.0,
55.0,
90.0,
77.0,
22.0,
25.0,
33.0,
45.0,
20.0,
23.0
};// The array with which the value of file Text_1 compare
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
Scanner t1 = new Scanner(TestJama.class.getResourceAsStream("/Text_1.txt"));
Scanner t2 = new Scanner(TestJama.class.getResourceAsStream("/Text_2.txt"));
while (t1.hasNext())
{
double t1_id = t1.nextDouble();
double t1_col2 = t1.nextDouble();
double t1_col3 = t1.nextDouble();
Matrix t1_matrix = new Matrix(new double[][]{
{t1_id},
{t1_col2},
{t1_col3}
});

//read the same row from Text_2.txt
double t2_col1 = t2.nextDouble();
double t2_col2 = t2.nextDouble();
double t2_col3 = t2.nextDouble();

double index = Arrays.binarySearch(
arr,
t1_id
);
if (index>0){
Matrix t2_matrix = new Matrix(new double[][]{
{t2_col1},
{t2_col2},
{t2_col3}
});
System.out.print("Text_1 matrix(before add)");
t1_matrix.print(9,6);
System.out.print("Text_1 matrix(after add)");
t1_matrix.plus(t2_matrix).print(9,6);
System.out.println("=============================================================");
}

}
}

输出结果:

[12.0、20.0、22.0、23.0、25.0、33.0、45.0、55.0、77.0、86.0、90.0]

Text_1矩阵(相加前) 86.000000 1.235600 -0.632500

Text_1矩阵(相加后) 89.573232 -2.097239 1.708300

========分割线=========

Text_1矩阵(相加前) 25.000000 1.051200 0.978520

Text_1矩阵(相加后) 28.573225 -2.281637 3.319220

========分割线=========

Text_1矩阵(相加前) 90.000000 3.568700 -0.897400

Text_1矩阵(相加后) 93.573237 0.235775 1.443600

========分割线=========

Text_1矩阵(相加前) 55.000000 -4.125400 1.361100

Text_1矩阵(相加后) 58.573271 -7.458244 3.701800

========分割线=========

如果根据您的代码进行修改,我会评论第 19 行,即

while (x.hasNext())) {

第 32 行是

}

那么它也会运行良好;原因是:您不应该在此处进行另一个内部循环,当外部循环读取 Text2.txt 的第一行后,它将读取 Text_1.txt 中的所有行从 Text_2.txt 读取第二行或其余行,x.hasNext() 将始终返回 false,因为它到达了 Text_1.txt 的末尾已经。

关于java - 使用扫描仪添加两个文件中的值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com