【发布时间】:2018-05-07 15:10:43
【问题描述】:
做这个家庭作业已经有一段时间了,但似乎无法完成 答案,对我的代码的一些反馈将不胜感激。 我有一个输入文本文件,其中包含以下内容
Min: 1,2,3,5,6
Max: 1,2,3,5,6
Avg: 1,2,3,5,6
P90: 1,2,3,4,5,6,7,8,9,10
Sum: 1,2,3,5,6
P70: 1,2,3
我的任务是读取输入文本文件并创建一个输出文本文件 内容如下:
The min of [1,2,3,5,6] is 1.
The max of [1,2,3,5,6] is 6.
The avg of [1,2,3,5,6] is 3.4.
The 90th percentile of [1,2,3,4,5,6,7,8,9,10] is 9.
The sum of [1,2,3,5,6] is 17.
The 70th percentile of [1,2,3] is 2.
到目前为止,我只是在尝试 min max 和 avg,我可以读取文件并且可以 输出我读入的内容。 我不知道如何找到 min max avg 等并输出这些值。似乎是 因为我的输入是一个字符串,我只需要读取 int 值。 这是我的代码
import java.io.File;
import java.util.Formatter;
import java.util.Scanner;
public class ExternalData {
public static void main(String[] args) {
try {
System.out.print("Enter the file name with extension : ");
Scanner input = new Scanner(System.in);
File file = new File(input.nextLine());
input = new Scanner(file);
while (input.hasNextLine()) {
int min = input.nextInt();
while(input.hasNextInt());
int num = input.nextInt();
if(num < min) {
min = num;
}
while (input.hasNextLine()) {
int max = input.nextInt();
while(input.hasNextInt());
int num2 = input.nextInt();
if(num2 > min) {
min = num;
String avg = input.nextLine();
Formatter f = new Formatter("C:\\Users\\Kevin\\Dropbox\\Kevin
Carter-8042\\Intro to Soft Eng\\Task 12\\outputTest.txt");
// print the formatted strings to the file
f.format("The min of [1,2,3,4,5,6] is " + min);
f.format("\n\nThe max of [1,2,3,4,5,6] is " + max);
f.format("\n\nThe avg of [1,2,3,4,5,6] is " + avg);
f.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
【问题讨论】:
-
如果输入恰好包含
int,while(input.hasNextInt());将永远循环。 -
根据token解析文件:
min、max等,每一个都会触发一个方法(使用switch-case)。 -
除了不正确的代码,你在这里犯的另一个大错误是你在做假设。您假设您的代码包含:
The avg of [1,2,3,4,5,6],但是一旦我更改输入文件,您的代码就会打印出错误的东西。始终尝试编写足够通用的代码。