gpt4 book ai didi

Java - 检索文件,计算,输出到另一个文件?

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:27 25 4
gpt4 key购买 nike

我是新来的,所以如果我在提问过程中犯了错误,请原谅。我在过去的一个半星期里研究了我的问题,但还没有找到我要找的东西(尽管我觉得答案非常接近)。我是一名学生,一直在使用 Eclipse 为我的 Java 类(class)完成一项作业。我编写了一段代码,从一个文件中获取信息,在计算中使用它,现在我需要将其输出到另一个文件中。这就是我遇到困难的地方。这是我到目前为止的代码:

import java.util.Scanner;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.NoSuchElementException;
import java.util.ArrayList;

public class Program6 {

private Scanner input;
private ArrayList<Double> payRoll = new ArrayList<>();
public static void main(String[] args) {

Program6 myObject = new Program6();

myObject.openFile();
myObject.readFile();
myObject.calculateRecords();
myObject.closeFile();

}

public void openFile() {
try {
input = new Scanner(Paths.get("Program6.txt"));
} catch (IOException ioException) {
System.err.println("Error opening file. Terminating.");
System.exit(1);
}
}

public void readFile() {
try {
while (input.hasNext()) {
payRoll.add(input.nextDouble());
}
} catch (NoSuchElementException elementException) {
System.err.println("File improperly formed. Terminating.");
} catch (IllegalStateException stateException) {
System.err.println("Error reading from file. Terminating.");
}
}
public void calculateRecords() {
System.out.printf("%10s%25s%15s%19s", "Before Payroll",
"Raise Percent",
"Raise Amount",
"After Payroll\n");

double raisePercent;
double raiseAmount;
double totalBeforePayroll = 0;
double totalAfterPayroll = 0;

for (int i = 0; i < payRoll.size(); i++) {
if (payRoll.get(i) > 70000) {
raisePercent = 4;
} else if (payRoll.get(i) > 50000) {
raisePercent = 7;
} else {
raisePercent = 5.5;
}
raiseAmount = payRoll.get(i) * raisePercent / 100;

System.out.printf("%12.2f%21.1f%18.2f%17.2f%n",
payRoll.get(i), raisePercent, raiseAmount, payRoll.get(i) + raiseAmount);

totalBeforePayroll += payRoll.get(i);
totalAfterPayroll += payRoll.get(i) + raiseAmount;
}

System.out.printf("%nTotal amount of raises: $%,.2f%n",
totalAfterPayroll - totalBeforePayroll);
System.out.printf("Average raise percent : %.0f%%",
(totalAfterPayroll - totalBeforePayroll) * 100.0 / totalBeforePayroll);
System.out.printf("%nAverage raise amount : $%,.2f%n",
(totalAfterPayroll - totalBeforePayroll) / payRoll.size());
}

public void closeFile() {
if (input != null)
input.close();

}
}

enter image description here

最佳答案

假设您只想输出添加加薪金额后的工资金额。

您可以编写一个 void 方法 writeFile(),在其中循环遍历列表并将每个条目附加到一个空文件中。

为此,我将使用 BufferedWriter 类,但您可以自由选择您喜欢的任何类。不过,我将继续使用 BufferedWriter 示例。

因此,我们需要在 writeFile 方法中设置 bufferedwriter。这样做是这样的:

BufferedWriter b = new BufferedWriter(new FileWriter("path here" + System.getProperty("file.separator") + "filename.txt"));

将“此处路径”替换为您要保存文件的位置。一个示例是将其替换为 System.getProperty("user.dir"),这是用户的工作目录。

System.getProperty("file.seperator") 在 Windows 中将是 \。但是使用 System.getProperty("file.separator") 也可以使其在不同的系统上工作。

所以:

BufferedWriter bw = new BufferedWriter(new FileWriter(System.getProperty("user.dir") + System.getProperty("file.separator") + "filename.txt"));

现在您可以循环浏览列表并将每个条目附加到编写器:

for (int i = 0; i < payRoll.size(); i++){
bw.append(payRoll.get(i));
}

之后,您可以并且应该使用以下方法“关闭”bufferedwriter:

bw.close();

该方法看起来像这样:

BufferedWriter b = new BufferedWriter(new FileWriter("path here" + System.getProperty("file.separator") + "filename.txt"));

for (int i = 0; i < payRoll.size(); i++){
bw.append(payRoll.get(i));
}
bw.close();

关于Java - 检索文件,计算,输出到另一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55125228/

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