java - 我需要帮助让程序以特定格式输出文本文件。

标签 java eclipse io bluej

这是我到目前为止的程序。它需要以特定格式输出到文本文件,但我遇到问题,请帮助。它没有向测试文件输出任何内容。

import java.util.*;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;

public class InputStream 
{ 
public static void main(String[] args){
FileInputStream filestream;
BufferedReader reader;
FileOutputStream output;
PrintWriter writer;
String firstline;
String body = "";
String line;

try{
filestream = new FileInputStream("salary.txt");
reader = new BufferedReader(new InputStreamReader(filestream));
output = new FileOutputStream("test.txt");
PrintWriter writer1 = new PrintWriter("test.txt");
firstline = reader.readLine();




 String result = firstline + body;
 writer1.write(result);
 reader.close();
 reader = null;
 filestream = null;

   }
      catch(IOException e)
     {
     System.out.println(e);

  }

 } 

}

我无法正确输出,但它应该是这样的。

Example Input   file
Ralph Kramden associate 70817.75
Jon T. Doe assistant 79174.73
Ed Norton associate 69619.0
Tom Foolery full 116992.43


Sample  Output  file
Doe, Jon T. assistant 79174.73
-------
Total Salary: $79174.73
Average Salary: $79174.73
Kramden, Ralph associate 70817.75
Norton, Ed associate 69619.0
 -------
 Total Salary: $140436.75
 Average Salary: $79174.73

最佳答案

首先,当您使用文件时,请务必在写入文件后关闭以保存。 您关闭了“阅读器”,但没有关闭“作者”。

这是一个输出您需要的示例:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class InputStream {

private static final String ASSISTANT = "assistant";
private static final String ASSOCIATE = "associate";
private static final String FULL = "full";

public static void main(String[] args) {
    FileInputStream filestream;
    BufferedReader reader;
    PrintWriter writer;
    String line;

    double totalAssistant = 0;
    double totalAssociate = 0;
    double totalFull = 0;

    try {
        filestream = new FileInputStream("salary.txt");
        reader = new BufferedReader(new InputStreamReader(filestream));
        writer = new PrintWriter("test.txt");

        List<String> assistantList = new ArrayList<String>();
        List<String> associateList = new ArrayList<String>();
        List<String> fullList = new ArrayList<String>();

        while ((line = reader.readLine()) != null) {

            String[] split = line.split(" ");

            // Value
            double value = Double.parseDouble(split[split.length - 1]);

            // Type
            String type = split[split.length - 2];

            if (ASSISTANT.equals(type)) {
                totalAssistant += value;
                assistantList.add(line);

            } else if (ASSOCIATE.equals(type)) {
                totalAssociate += value;
                associateList.add(line);

            } else if (FULL.equals(type)) {
                totalFull += value;
                fullList.add(line);
            }
        }

        writeInFileOutput(writer, totalAssistant, assistantList);
        writeInFileOutput(writer, totalAssociate, associateList);
        writeInFileOutput(writer, totalFull, fullList);

        reader.close();

        writer.close();
    } catch (IOException e) {
        System.out.println(e);

    } finally {
        reader = null;
        filestream = null;
        writer = null;
    }

}

private static void writeInFileOutput(PrintWriter writer, double total,
        List<String> listLines) {
    for (String assistant : listLines) {
        writer.append(assistant).append("\n");
    }

    writer.append("-------\n");
    writer.append("Total Salary: $").append(String.valueOf(total)).append("\n");
    writer.append("Average Salary: $")
            .append(String.valueOf(total / listLines.size())).append(" \n\n");
}

}

输出:

Jon T. Doe assistant 79174.73
-------
Total Salary: $79174.73
Average Salary: $79174.73 

Ralph Kramden associate 70817.75
Ed Norton associate 69619.0
-------
Total Salary: $257429.18
Average Salary: $128714.59 

Tom Foolery full 116992.43
-------
Total Salary: $116992.43
Average Salary: $116992.43 

关于java - 我需要帮助让程序以特定格式输出文本文件。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237303/

相关文章:

java - GWT、Eclipse 插件如何重命名项目以及 .gwt.xml 文件?尝试这样做时出现错误

c++ - 尝试将多个输出写入 .txt 文件 C++

java - 配置 OPC UA 服务器 (Milo)?

linux - 使用 select() 进行 I/O 多路复用

c - 理解 C 中的输入和输出

java - 如何使用比较器方法对枚举对象进行排序?

java - 如何在 Java 中最小化/图标化 JWindow?

Java:如何检测(和更改?)System.console 的编码?

java - Apache Kafka 0.9 Java API 使用主题开头的所有消息

java - 安卓项目: Conversion to Dalvik format failed with error 1