gpt4 book ai didi

java - 使用 Java 中的文本文件查找数字的平均值

转载 作者:行者123 更新时间:2023-12-01 10:55:53 24 4
gpt4 key购买 nike

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 个数字或 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);
}
}

关于java - 使用 Java 中的文本文件查找数字的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615180/

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