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 ScannerBufferedReader,并花了很长时间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): "); 
+0

谢谢:)这个工作。我相信这会在未来节省我的时间:) – kyul 2013-05-02 12:32:45

+0

在写入提示之前接受输入没有任何意义。 – EJP 2013-05-02 12:39:17

+0

我不认为它也没有任何意义,但它的工作:S 我不知道为什么它会倒退... – kyul 2013-05-31 09:58:16