簡體   English   中英

文件I / O基礎

[英]File I/O Basics

我正在學校編程實驗室工作,但被卡住了。 這本書在教授如何正確設置I / O格式方面不是很有幫助,或者至少我不太了解它。 我需要一些繼續進行下一步的幫助,但這是我應該制作的程序的全部要求:

旅館銷售員在文本文件中輸入銷售。 每行包含以下內容,並用分號隔開:客戶名稱,出售的服務(例如Dinner,Conference,Lodging等),銷售金額以及該事件的日期。 編寫一個程序,讀取該文件並顯示每個服務類別的總金額。 如果文件不存在或格式不正確,則顯示錯誤。 除了列出的程序規范之外,您的程序還應打印結果並將結果發送到單獨的輸出文件。

input.txt的示例:

Elmer Fudd;住宿; 92.00; 11-01-2014

Elmer Fudd; Conference; 250.00; 11-02-2014

達菲鴨;晚餐; 19.89; 11-02-2014

達菲鴨;會議; 275.00; 11-02-2014

米老鼠;晚餐; 22.50; 11-02-2014

米老鼠;會議; 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();
    }
}

堅持使用一台掃描儀。

總共閱讀每一行,而不是在';'上打斷。

然后使用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]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM