【发布时间】:2020-08-19 03:52:54
【问题描述】:
输入文本文件:
最小值:1,2,3,5,6
最大:1,2,3,5,6
平均:1,2,3,5,6
从文本文件中的数字列表中获取 MIN/MAX 和 SUM。
package net.codejava;
import java.io.FileReader;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Formatter;
public class MyFile {
public static int[] toIntArray(String input, String delimiter) {
return Arrays.stream(input.split(delimiter)).mapToInt(Integer::parseInt).toArray();
}
public static void main(String[] args) throws FileNotFoundException {
//Declare Variables
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
double avg = 0.0;
int sum = 0;
int count = 0;
String[] numArray = new String[30];
int[] maxArray;
int[] minArray;
int[] sumArray;
try {
//Read the text file ('input.txt')
String myFile = "input.txt";
Scanner input = new Scanner(new FileReader(myFile));
while(input.hasNext()) {
input.next();
numArray[count] = input.next();
count++;
}
} catch(FileNotFoundException e) {
System.out.println("File not found!");
}
minArray = toIntArray(numArray[0],",");
maxArray = toIntArray(numArray[1],",");
sumArray = toIntArray(numArray[2],",");
System.out.println(" Min Value " + Arrays.stream(minArray).min().getAsInt());
System.out.println(" Max Value " + Arrays.stream(maxArray).max().getAsInt());
System.out.println(" Sum Value " + Arrays.stream(sumArray).sum());
}
}
期望的输出:
[1, 2, 3, 5, 6] 的最小值为 1
[1, 2, 3, 5, 6] 的最小值是 6
[1, 2, 3, 5, 6] 的平均值是 3.4
电流输出:
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at net.codejava.MyFile.main(MyFile.java:32)
【问题讨论】:
-
如果文件有非int值,input.hasNextInt()返回false,此时while循环结束
-
@b1ack_char1ie - 请检查最新的解决方案并发表评论。