我在学校编程实验室工作,但我已经陷入困境。这本书在教授如何正确格式化I / O方面没有太大帮助,或者至少我没有正确理解它。我需要一些帮助继续下一步,但这是我应该制作的程序的全部要求:
酒店销售人员在文本文件中输入销售。每行包含 以下用分号分隔:客户端的名称, 售出的服务(如晚餐,会议,住宿等), 销售金额以及该活动的日期。写一个程序 读取此类文件并显示每项服务的总金额 类别。如果文件不存在或格式不正确,则显示错误 不正确。除了列出的程序规范,您的 程序应该打印结果,并将结果汇总到a 单独的输出文件。
input.txt示例:
Elmer Fudd;住宿; 92.00; 11-01-2014
Elmer Fudd; Conference; 250.00; 11-02-2014
Daffy Duck;晚餐; 19.89; 2014年2月11日
Daffy Duck;会议; 275.00; 11-02-2014
米老鼠;晚餐; 22.50; 2014年2月11日
Mickey Mouse; Conference; 275.00; 11-02-2014
我目前仍在坚持弄清楚如何正确加载和格式化文件,我认为我做得对,但后来我的教授建议将每个文件分解为自己的行,但我的任何地方都没有本书清楚地告诉我们该如何做到这一点。为了清楚起见,我不是在寻找编码奇迹,我只是希望有人帮助指导我正确的方向,以便我接下来要做什么。在一个非常详细的指南中处理这种情况可能是更好的方法吗?没什么好看的。提前谢谢,这是我现在的代码。
import java.util.*;
import java.io.*;
public class Sales
{
public static void main(String[] args) throws FileNotFoundException
{
File inputFile = new File("input.txt");
Scanner in = new Scanner(inputFile);
PrintWriter out = new PrintWriter("output.txt");
double dinnerTotal = 0;
double conferenceTotal = 0;
double lodgingTotal = 0;
Scanner lineScanner = new Scanner(inputFile);
lineScanner.useDelimiter(";");
while (lineScanner.hasNext())
{
String line = in.nextLine(); //Here's where I'm really stuck
System.out.print(line); //Not to say I'm not stumped all over.
}
in.close();
out.close();
lineScanner.close();
}
}
杰森说,我现在就在这里:
import java.util.*;
import java.io.*;
public class Sales
{
public static void main(String[] args) throws FileNotFoundException
{
File inputFile = new File("input.txt");
Scanner in = new Scanner(inputFile);
PrintWriter out = new PrintWriter("output.txt");
double dinnerTotal = 0;
double conferenceTotal = 0;
double lodgingTotal = 0;
while (in.hasNext())
{
String line = in.nextLine();
String[] parts = line.split(";");
if(parts[1].equals("Conference")) {
conferenceTotal += Double.parseDouble(parts[2]);
} else if(parts[1].equals("Dinner")) {
dinnerTotal += Double.parseDouble(parts[2]);
} else if(parts[1].equals("Lodging")) {
lodgingTotal += Double.parseDouble(parts[2]);
}
}
in.close();
out.close();
}
}
答案 0 :(得分:0)
坚持使用一台扫描仪。
总共阅读每一行,而不是打破';'。
然后使用String.split()
在';'处分开文本行分离器。
然后检查第二部分(从零开始的索引)以检索服务类别,并将第三部分中的值添加到相关总数中。
String line = in.nextLine();
String[] parts = line.split(";");
if(parts[1].equals("Conference")) {
conferenceTotal += Double.parseDouble(parts[2]);
} else if(parts[1].equals("Dinner")) {
dinnerTotal += Double.parseDouble(parts[2]);
} else if(parts[1].equals("Lodging")) {
lodgingTotal += Double.parseDouble(parts[2]);
}