package txtfileaverage;
import java.io.*;
import java.util.Scanner;
/**
*
* @author Frazer
*/
public class Txtfile {
public static void main(String args[]) throws IOException
{
Scanner file = new Scanner(new File("input.txt"));
int numTimes = file.nextInt();
file.nextLine();
for(int i = 0; i < numTimes; i++);
{
int sum = 0;
int count = 0;
Scanner split = new Scanner(file.nextLine());
while(split.hasNextInt())
//for (int a = 0; a < 4 ; a++)
{
sum += split.nextInt();
count++;
}
System.out.println("the average is = " + ((double)sum / count));
}
}
}
文字档案:
4
100 100 100 100
100 100 50 50
100 90 80 70
60 50 40 30
以上是我试图读取的文本文件,显示的输出是
“平均值是100”但它只是看一个数字或一行,有关如何让它读取其他行的任何提示?我已经看了一些教程,在比较代码之后,我正在努力找出为什么它只找到1个数字或1行的平均值而不是整行,每个都有另一个声明。
答案 0 :(得分:1)
使用Java 8 Collectors.averagingInt,它就像:
一样简单 Arrays.stream(Files.lines(Paths.get(ClassLoader.getSystemResource(
"input.txt").toURI())).reduce((a, b) -> a + " " + b)
.map(e -> e.split(" ")).get()).filter(e -> e.matches("\\d+"))
.map(Integer::new)
.collect(Collectors.averagingInt(Integer::intValue));
<强>用法:强>
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.stream.Collectors;
public class FindAverage {
public static void main(String[] args) throws IOException,
URISyntaxException {
Double average = Arrays
.stream(Files
.lines(Paths.get(ClassLoader.getSystemResource(
"input.txt").toURI()))
.reduce((a, b) -> a + " " + b).map(e -> e.split(" "))
.get()).filter(e -> e.matches("\\d+"))
.map(Integer::new)
.collect(Collectors.averagingInt(Integer::intValue));
System.out.println("Average = " + average);
}
}
答案 1 :(得分:0)
这里的代码应该可行。我在这里做的是通过while循环逐行浏览文件。对于每一行,我按指定的分隔符空格分割部分。然后,我循环遍历元素trim()
,删除多余的空格,抓取整数,并将其添加到sum。对于我采用的每个整数,我加上计数。最后它和你的一样。
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Test {
public static void main(String args[]) throws IOException {
Scanner file = new Scanner(new File("input.txt"));
String line = null;
int sum = 0;
int count = 0;
while ((line = file.nextLine()) != null) {
String[] vals = line.split(" ");
for(int i = 0; i < vals.length; i++) {
sum += Integer.valueOf(vals[i].trim());
count++;
}
}
System.out.println("the average is = " + ((double) sum / count));
}
}
答案 2 :(得分:0)
这是从文本文件计算平均值的简单方法。只需在while循环中编写一条if语句。