在Java中阅读2列双打

时间:2015-10-28 08:50:05

标签: java java.util.scanner filereader

我不知道如何注册我的双打。

Scanner s = new Scanner(new FileReader("TwoRows.txt"));

double total1=0;
double total2=0;
List<Double> l1 = new ArrayList<Double>();
List<Double> l2 = new ArrayList<Double>();

while (s.hasNextDouble()) {
    l1.add(s.nextDouble());
    l2.add(s.nextDouble());
}

for (double x: l1){
    total1 += x;
}
for (double x: l2){
    total2 += x;
}
System.out.println(l1);
System.out.println(l2);
System.out.println(total1);
System.out.println(total2);

该文件如下所示:

12.4 12.2
15.2 19.3
12.2 17.3
17.1 15.4
9.2  10.2
10.3 3.3

2 个答案:

答案 0 :(得分:1)

您要做的是阅读文件。为此你可以使用这部分代码:

File finput = new File("yourfile");
BufferedReader br = new BufferedReader(new FileReader(finput));

然后你要做的就是逐行阅读并分割每一行,感谢空格字符。

String line ;
String[] linesplit ;
double d1, d2 ;
while ((line = br.readLine()) != null) {
    linesplit = line.split("\\s+");
    d1 = Double.parseDouble(linesplit[0]);
    d2 = Double.parseDouble(linesplit[1]);
    // Some more code
}

通过这种方式,您可以阅读文件并执行您想要对双打执行的任何操作。 如果您不确定

答案 1 :(得分:0)

我不确定你要做什么,但我认为逐行读取文件并用空格分割每一行然后将这两个值解析为Double这是一个更好的方法

试试这段代码:

double total1 = 0;
double total2 = 0;

try (BufferedReader br = new BufferedReader(new FileReader("TwoRows.txt"))) {
String line;
  while ((line = br.readLine()) != null) {
   String[] twoDoubles = line.split("\\s+");
   total1 += Double.parseDouble(twoDoubles[0]);
   total2 += Double.parseDouble(twoDoubles[1]);      
  }
}

System.out.println(total1);
System.out.println(total2);

小心twoDoubles[n]如果每行包含完全两个双精度,它只会以这种方式工作 - 否则会抛出超出范围异常。更好地检查数组大小。