java:所有输入流都以一个ctrl+z终止
我正在做一个java练习,它需要连续地从输入和事务中获取客户数据,并将它们保存到两个单独的文本文件中。在运行时,它需要获取第一个文件的数据oldMaster,然后从用户输入中获取另一个文件的trans。 当我使用ctrl+z终止第一个输入流时,下一个输入不会开始工作。这是我的密码:java:所有输入流都以一个ctrl+z终止,java,io,stream,Java,Io,Stream,我正在做一个java练习,它需要连续地从输入和事务中获取客户数据,并将它们保存到两个单独的文本文件中。在运行时,它需要获取第一个文件的数据oldMaster,然后从用户输入中获取另一个文件的trans。 当我使用ctrl+z终止第一个输入流时,下一个输入不会开始工作。这是我的密码: import java.io.*; import java.util.*; public class SampleMaker { Formatter output1; Formatter output
import java.io.*;
import java.util.*;
public class SampleMaker {
Formatter output1;
Formatter output2;
public void makeSampleOldMaster(){
String firstName;
String lastName;
int accountNumber;
double balance;
Scanner input1=new Scanner(System.in);
try{
output1=new Formatter("oldmaster.txt");
System.out.println("Enter account number,FirstName,LastName and balance");
while(input1.hasNext()){
accountNumber=input1.nextInt();
firstName=input1.next();
lastName=input1.next();
balance=input1.nextDouble();
output1.format("%-10d%-10s%-10s%-10.2f",accountNumber,firstName,lastName,balance);
System.out.println("Enter account number,FirstName,LastName and balance");
}
}
catch(IOException e){
System.err.println("IO exception");
System.exit(1);
}
catch(NoSuchElementException e){
System.err.println("Invalid input");
input1.nextLine();
}
}
public void makeSampleTrans(){
Scanner input2=new Scanner(System.in);
double transAmount;
int accountNumber;
try{
output2=new Formatter("trans.txt");
System.out.println("Enter account number,and Transaction Amount:");
while(input2.hasNext()){
accountNumber=input2.nextInt();
transAmount=input2.nextDouble();
output2.format("%-10d%-10.2f",accountNumber,transAmount);
System.out.println("Enter account number,and Transaction Amount:");
}
}
catch(IOException e){
System.err.println("IO exception");
System.exit(1);
}
catch(NoSuchElementException e){
System.err.println("Invalid input");
input2.nextLine();
}
}
public void closeOldMasterFile(){
if(output1 != null){
output1.close();
}
}
public void closeTransFile(){
if(output2 != null){
output2.close();
}
}
}
当我运行此代码时:
public class Test {
public static void main(String[] args){
SampleMaker s=new SampleMaker();
s.makeSampleOldMaster();
s.closeOldMasterFile();
s.makeSampleTrans();
s.closeTransFile();
}
}
在使用ctrl+z结束第一个输入并启动第二个输入后,它停止工作 流的尽头就是流的尽头。一旦System.in遇到了流的末尾,它会将它传递给任何您可能会环绕它的对象,就像您这样做的次数一样多。你的设计不正确。您必须使用其他工具来分隔第一组输入。是否有异常或正常终止?Ctrl-Z表示EOF我假设这是windows,因此您关闭stdin。在一个封闭的输入流上,难道没有什么东西可以从扫描器中读取吗?谢谢EJP。你能建议一些有用的方法吗?