• 创建工资单文件
• 工资单文件包含人力资源和警察部门两个部门的 20 名员工的小时工资信息。该文件将有两列浮点数。第一栏是人力资源,第二栏是警察部门。所以每一行都有两个浮点数。
• 您需要使用[0, 100) 中的随机数作为双精度类型来创建工资单文件。
• 阅读工资单文件。
• 您需要使用 Scanner 对象的 nextLine() 来读取工资单文件中的每一行。
• 使用我们在课堂上讨论过的 splitString() 函数解析每一行以获得两个小时工资的数组。该函数将返回 String [] 类型。String 和 Character 类的功能将有助于解决 splitString。
• 计算每个部门的总工资和平均工资
• 您需要使用 Double.parseDouble() 将字符串类型的工资转换为双精度类型
• 编写一个包含总工资和平均工资的输出文件。
• 输入文件名使用“pay.txt”,输出文件名使用“summary.txt”。
现在我明白了如何在没有数组的情况下做到这一点,因为我已经完成了。但是一旦我应该将 txt 文件解析成多个数组,我就完全迷失了。我的教授禁止我们使用 in.hasNextDouble(),这就是我解决最后一个程序的方法。如果没有它,如何将程序中txt文件中同一行的两个数字分成两个不同的数组?
这是上一个程序的代码,也是我目前使用当前程序的代码。
public class FileHandling {
public static void main(String [] args) throws FileNotFoundException{
File inputFileName = new File("input.txt");
Scanner in = new Scanner(inputFileName);
double averageWorker = 0;
double averageHr = 0;
double totalWorkerPay = 0;
System.out.println(" HR\t\tWorkers");
double totalHrPay = 0;
while (in.hasNextDouble()) {
double humanResourcesPay = in.nextDouble();
System.out.printf("%8.3f\t", humanResourcesPay);
totalHrPay += humanResourcesPay;
double workerPay = in.nextDouble();
System.out.printf("%.3f\n", workerPay);
totalWorkerPay += workerPay;
averageWorker = totalWorkerPay/3;
averageHr = totalHrPay/3;
}
System.out.printf("Total pay for HR is %.1f", totalHrPay);
System.out.printf("\nAverage pay for HR is %.1f", averageHr);
System.out.printf("\nThe total pay for Workers is %.1f", totalWorkerPay);
System.out.printf("\nAverage pay for Workers is %.1f", averageWorker);
System.out.print("\nEnter the file name:");
Scanner console = new Scanner(System.in);
String outputFileName = console.nextLine();
PrintWriter out = new PrintWriter(outputFileName);
System.out.println("total is " + totalHrPay);
in.close();
out.close();
}
}
好的,这就是我到目前为止的作业。
public class FileHandlingNextLine {
public static void main(String [] args) throws FileNotFoundException{
File inputFileName = new File("pay.txt");
Scanner in = new Scanner(inputFileName);
int i = 0;
int j = 0;
double total[] = new double[2];
while (in.hasNextLine()) {
String line = in.nextLine();
System.out.println("Line : " + line);
String pays[] = splitString(line);
for(i = 0; i < pays.length; i++) {
System.out.printf(pays[i]);
total[i] += Double.parseDouble(pays[i]);
}
}
}
任何帮助将不胜感激,我迷路了,我的老师帮助不大。