如何在读取输入文件后操作输出文件



我正在制作这个程序,它应该从输入文件中读取,然后创建一个输出文件。

输入文件(portlandvip2.txt):

法院50

10箱俱乐部25

流氓康威10盒子

Loretta Barrett 3 Court

洛拉斯·提利尔5俱乐部

玛格丽·提利尔8盒子

Roslin Frey 2 Box

珊莎·史塔克2俱乐部

雪诺5俱乐部

艾德慕·徒利3盒子

乔佛里·拜拉席恩第20宫

史坦尼斯·拜拉席恩4俱乐部

詹姆·兰尼斯特2盒子

瑟曦·兰尼斯特1宫廷

Beric Dondarrion 8 Court

巴隆·葛雷乔伊16盒子

奥莲娜·提利尔4宫廷

梅斯·提利尔5盒子

提利昂·兰尼斯特2俱乐部

桑铎·克里冈2宫廷

格雷果·克里冈6俱乐部

山姆威尔·塔利3俱乐部

派提尔·贝里席6宫廷

下面是输出文件的示例(portland2out.txt):

法院50美元

$10

俱乐部25美元

流氓康威$100

Loretta Barrett $150.00

我遇到的问题是,所有的输出文件打印是Petyr Baelish。

这是目前为止的程序:

import java.util.Scanner;
import java.io.*;
import java.io.Writer;

public class WebberProject2
{
    public static void main(String[] args) throws IOException
    {
        Scanner inputFile = new Scanner(System.in); 
        File inputScanner = new File("portlandvip2.txt");
        Scanner scanner = new Scanner(new File("portlandvip2.txt"));
        while(scanner.hasNext())
        {
            String firstName = scanner.next();
            String lastName = scanner.next();
            PrintWriter outputFile = new PrintWriter("portland2out.txt");
            outputFile.println(" " + firstName + " " + lastName); 
            scanner.nextLine();
            inputFile.close();
            outputFile.close();
        }
    }
}

在循环中打开和关闭输出文件,每次执行循环时重写一行。将printwwriter及其close()方法置于循环之外。此外,还有其他资源也在循环中被关闭。试试这个方法:

// ...

Scanner inputFile = new Scanner(System.in); 
File inputScanner = new File("portlandvip2.txt");
Scanner scanner = new Scanner(new File("portlandvip2.txt"));
PrintWriter outputFile = new PrintWriter("portland2out.txt");
while(scanner.hasNext())
{
    String firstName = scanner.next();
    String lastName = scanner.next();
    outputFile.println(" " + firstName + " " + lastName); 
    scanner.nextLine();
}
outputFile.close();
inputFile.close();
scanner.close();
// ...

您的代码看起来不完整。While循环未关闭。此外,您正在关闭循环内的文件,这将引发异常。使用以下代码作为基础,并根据您的需求进行调整。例如,使用Scanner方法nextInt()读取数字令牌,并在写入输出文件时在它们前面加上$ sign。

    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Scanner;

    public class TestScanner{
    public static void main(String[] args)
    {
        Scanner scanner = null;
        PrintWriter outputFile = null;
        try{
        scanner = new Scanner(new File("portlandvip2.txt"));
        outputFile = new PrintWriter("portland2out.txt");
        String firstName, lastName;
        int num = 0;
        while(scanner.hasNext())
        {
             firstName = scanner.next();
             if(scanner.hasNextInt()){
                 num = scanner.nextInt();
             }
             lastName = scanner.next();
             outputFile.println(" " + firstName + " " + lastName + " $ " + num); 
             scanner.nextLine();
        }
       }catch(IOException e){
           System.out.println("exception:"+e);
       }finally{
           scanner.close();
           outputFile.close();
       }
    }
    }

相关内容

  • 没有找到相关文章

最新更新