System.out.println()和BufferedReader在控制台中混合输出
问题描述:
我目前正在开发一个程序,它使用BufferedReader
来读取输入,而System.out.println()
用于输出。System.out.println()和BufferedReader在控制台中混合输出
这里是我的代码:
public void chooseMethod() throws IOException{
int in = 0;
while(true){
System.out.println("What do you want to do? (0 to exit, 1 to read Bank Account, 2 to write Bank Account, 3 to read Bill, 4 to write Bill): ");
in = Integer.parseInt(cin.readLine());
if(in == 0){
break;
}else if((in < 0) || (in > 4)){
System.out.println("Invalid choice.");
}else if(in == 1){
showBankAccount();
}else if(in == 2){
insertBankAccount();
}else if(in == 3){
showBill();
}else if(in == 4){
insertBill();
}
}
dbm.close();
}
public void insertBankAccount() throws IOException{
int bankNr = 0;
int sortCode = 0;
int accountNumber = 0;
int balance = 0;
int interest = 0;
String details;
String name;
while(true){
System.out.println("Enter bankNr (0 to exit): ");
bankNr = Integer.parseInt(cin.readLine());
if(bankNr == 0){
break;
}else if(bankNr <= maxBankNr){
System.out.println("Invalid Number: already taken");
break;
}
System.out.println("Enter Account Name: ");
name = cin.readLine();
System.out.println("Enter Sort Code: ");
sortCode = Integer.parseInt(cin.readLine());
System.out.println("Enter Account Number: ");
accountNumber = Integer.parseInt(cin.readLine());
System.out.println("Enter balance: ");
balance = Integer.parseInt(cin.readLine());
System.out.println("Enter Interest: ");
interest = Integer.parseInt(cin.readLine());
System.out.println("Enter Details: ");
details = cin.readLine();
bankAccountDAO.insertBankAccount(bankNr, sortCode, accountNumber, balance, interest, details, name);
this.maxBankNr = bankAccountDAO.getMaxBankNr();
}
}
现在,说我输入 “2” 到 “写的银行账户,” 输出如下:
运行:
What do you want to do? (0 to exit, 1 to read Bank Account, 2 to write Bank Account, 3 to read Bill, 4 to write Bill):
Enter bankNr (0 to exit):
2
输出中的这个“2”应该在“输入bankNr(0退出)之前:”
我已经有过几次这个问题,两个w ith Scanner
和BufferedReader
,并花了很长时间google搜索,但似乎无法找到任何答案。
有没有其他人有这个问题?如果是这样,你是如何解决它的?
答
在你insertBankAccount()
方法内while循环变化:
System.out.println("Enter bankNr (0 to exit): ");
bankNr = Integer.parseInt(cin.readLine());
要:
bankNr = Integer.parseInt(cin.readLine());
System.out.println("Enter bankNr (0 to exit): ");
谢谢:)这个工作。我相信这会在未来节省我的时间:) – kyul 2013-05-02 12:32:45
在写入提示之前接受输入没有任何意义。 – EJP 2013-05-02 12:39:17
我不认为它也没有任何意义,但它的工作:S 我不知道为什么它会倒退... – kyul 2013-05-31 09:58:16