我正在制作这个程序,它应该从输入文件中读取,然后创建一个输出文件。
输入文件(portlandvip2.txt):
法院50 方框10 25俱乐部 无赖康威10盒 Loretta Barrett 3法院 Loras Tyrell 5俱乐部 Margaery Tyrell 8盒 Roslin Frey 2盒 Sansa Stark 2俱乐部 琼恩·雪诺5俱乐部 Edmure Tully 3盒 乔佛里·拜拉席恩20法院 史坦尼斯拜拉席恩4俱乐部 Jaime Lannister 2盒 Cersei Lannister 1法院 Beric Dondarrion 8法院 巴伦·格雷霍伊16盒 奥莱娜·提雷尔第4法庭 梅斯·提利尔5盒 提利昂兰尼斯特2俱乐部 Sandor Clegane 2法院 Gregor Clegane 6俱乐部 桑威尔·塔利3俱乐部 Petyr Baelish第6法院
这是一个输出文件应该是什么样子的示例(portland2out.txt):
法庭$50 方框10美元 俱乐部25美元 无赖康威100.00美元 洛丽塔·巴雷特150.00美元
我遇到的问题是所有的输出文件都是Petyr。
到目前为止,这是一个项目:
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();
}
}
}发布于 2014-04-30 18:48:41
在循环中打开和关闭输出文件,每次执行循环时重写一行。将PrintWriter及其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();
// ...发布于 2014-04-30 19:05:24
你的代码看上去不完整。循环未关闭。此外,您正在关闭循环内的文件,这将引发异常。使用下面的代码作为基础,并根据需要对其进行调整。例如,使用Scanner方法nextInt()读取数字标记,并在写入输出文件时在它们前面加上$符号。
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();
}
}
}https://stackoverflow.com/questions/23395560
复制相似问题