2013-11-26 6 views
0

Я установил свою программу для печати в файл, который работает правильно. Единственная проблема заключается в том, что, поскольку я сделал это изменение, программа не будет продолжена, как следует, после того, как данные будут переназначены в файл.Печать в файл должным образом, но затем зависание

Loan.printAmortTable(name, custID, loanID, cBalance, term, cPayment); 
System.out.println(); 
System.out.print("Would you like to print this schedule? y/n: "); 
String l = input.next(); 
switch(l) 
{ 
case "y": 
    try 
    { 
     Loan.printSchedule(name, custID, loanID, cBalance, term, cPayment); 
    } 
    catch (FileNotFoundException e) 
     { 
     e.printStackTrace(); 
    } 
    System.out.println("Printed to output.txt"); 
    input.next(); 
    break; 
case "n": 
    break; 
} 

Loan.printSchedule

public static void printSchedule(String name, int custID, int loanID, double loanAmount, int term, double payment) throws FileNotFoundException 
{ 
PrintStream out = new PrintStream(new FileOutputStream("output.txt")); 
System.setOut(out); 
out.println("Name " + name); 
out.println("ID # " + custID); 
out.println("Loan # " + loanID); 
out.println("Amount Borrowed " + loanAmount); 
out.println("Interest Rate 10.99%"); 
out.println("Term of the loan " + term); 
out.println(); 

out.println("Payment  Payment  Interest  Principle  Outstanding"); 
out.println("Number  Amount  Portion  Portion  Balance "); 
double pay = Loan.amortization(loanAmount, term); 
double balance = loanAmount; 
int i = 0; 
while (i<term*12) 
{ 
out.printf("%3d", i + 1); 
out.printf("%14.2f",pay); 
double interest = balance * (interestRate); 
interest = (double)Math.round(interest*100)/100; 
out.printf("%11.2f", interest); 
double principal = payment - interest; 
principal = (double)Math.round(principal*100)/100; 
out.printf("%15.2f", principal); 
balance = balance - principal; 
    balance = (double) Math.round(balance*100)/100; 
    out.printf("%15.2f%n", balance); 
    i++; 
} 
out.close(); 
} 

Является ли это какой-то вопрос буфера?

+0

Вы уверены, что 'while (i Smit

+0

Да, это заканчивается. У меня есть тот же цикл в методе, который печатает ту же самую информацию на экране и работает отлично. – user1873736

ответ

2

Вы перешли System.out здесь:

System.setOut(out); 

Затем закройте этот поток. После того, как вы вернетесь из этого метода, вы снова попытаетесь распечатать System.out, что не работает. Удалите линию System.setOut(out);, и она должна работать.

 Смежные вопросы

  • Нет связанных вопросов^_^