求助:用Java编写存取款程序,报错 $Exception in thread "main" 和java.lang.IllegalStateException: Scanner closed

package piggybank;
import java.util.Scanner;
public class piggybank
{
public static void main(String[] args)
{

Scanner input = new Scanner(System.in);
System.out.println("Welcome to the Piggy Bank. Please enter starting balance: ");
double startingBalance = input.nextDouble();
System.out.println("Piggy Bank ATM");
System.out.printf("Balance :  %6.2f", startingBalance);
System.out.println();

while (true){

System.out.println();
System.out.println("OPTIONS");
System.out.println();
System.out.println("1.Deposit\n"+"2.Withdraw\n"+"3.Quit\n");
System.out.println();   
System.out.println("Choose one:");
int option = input.nextInt();
switch (option) {

    case 1:
        System.out.println("Enter deposit amount:\n" + "Piggy Bank ATM");
        double deposit = input.nextDouble();
        double depositBalance= startingBalance + deposit;
        System.out.printf(" Balance: $%6.2f ",depositBalance);
        System.out.println();
    break;
    case 2:
        System.out.println("Enter withdrawal amount:\n" + "Piggy Bank ATM");
        double withdraw = input.nextDouble();
        double withdrawBalance= startingBalance - withdraw;
        System.out.printf("Balance:$%8.2f ",withdrawBalance);
        System.out.println();   
    break;

    case 3:
        System.out.printf("Ending Balance: $%8.2f ", startingBalance);
    break;

    }     

    input.close();  
}

}
}

我想要反复执行存取款程序,但是就会显示出错
图片说明
求帮忙!
想要得到以下运行结果
图片说明
我的运行结果是这样的,没有办法进行第二次输入
图片说明
呜呜呜,初学什么都不会,求助

1个回答

input.close(); 这句放在 while 循环中,所以只有第一次循环有用,后面的循环就会报该异常。
解决办法:将这句放在 while 的外面。先定位 while 的结束符号 } ,在其外面加这句。

wojiushiwo945you
毕小宝 回复沉吟丹青: 有用点个点个采纳吧!这里并没有返回结果,而是 print 了。所以不明白你说的根据上一步结果继续处理是什么意思?
5 个月之前 回复
weixin_44876770
沉吟丹青 非常感谢!
5 个月之前 回复
weixin_44876770
沉吟丹青 对现在可以啦!还想问一下怎样编码才能让数字根据上一步的结果继续运算,现在好像都是用的原始数字
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问