异常:java.util.NoSuchElementException--Scanner异常

今天在尝试修改代码的时候,出现了异常:java.util.NoSuchElementException–
知道是Scanner异常,提示没有此元素,

具体的原因就是我们的scanner 在使用的时候不小心被关闭了,因为关闭的位置不对,所以不要考虑io留关闭的位置,不然容易报错–;

package Test;
import java.util.Scanner;
public class SharkSystem {
    private int shouru = 0;
    private int zhichu = 0;
    private String shouruSM = "";
    private String zhichuSM = "";
    int balance = 0;
    String details = "";//用来接收所有输入的内容
    boolean flag = true;//定义标记

    public void StartSystem() {//定义方法
//        //下面开始循环
        while (flag) {
            //开机界面
            System.out.println("-----欢迎使用鲨鱼记账系统-----");
            System.out.println("1,收支明细");
            System.out.println("2,登记收入");
            System.out.println("3,登记支出");
            System.out.println("4,退出系统");
            System.out.println("请按照提示选择你要使用的的功能--");
            Scanner scanner = new Scanner(System.in);//判断用户输入是否符合要求
            int choice = scanner.nextInt();//选择
            //检测用户输入的数据并返回相应的请求结果
            while (choice != 1 & choice != 2 & choice != 3 & choice != 4) {
                System.out.println("请重新输入--");
                choice = scanner.nextInt();
            }


            //定义具体的功能模块//输入对应数字选择功能
            switch (choice) {
                case 1://收支明细
                    System.out.println("欢迎使用小鲨鱼收支记账系统》》》");
                    System.out.println("收支明细--");
                    //之后再次获取用户输入的内容
                    //这里打印明细
                    if (details != "") {
                        System.out.println(details.substring(0, details.length() - 1) + 2);
                    } else {
                        System.out.print(details);
                    }

                    break;
                case 2://登记收入
                    System.out.println("请输入您的收入--");
                    shouru = scanner.nextInt();
                    System.out.println("请输入收入说明--");
                    shouruSM = scanner.next();//第一次next
                    System.out.println("-登记完成-");
                    balance += shouru;
                    details = details + "收入:" + shouru + ",收入说明:" + shouruSM + ",账户余额:" + balance + "\n";
                    break;
                case 3://登记支出
                    System.out.println("请输入您的支出--");
                    zhichu = scanner.nextInt();
                    System.out.println("请输入支出说明--");
                    zhichuSM = scanner.next();
                    System.out.println("-登记完成-");
                    balance -= zhichu;
                    details = details + "支出:" + zhichu + ",支出说明:" + zhichuSM + ",账户余额:" + balance + "\n";
                    break;
                case 4://退出系统

                    System.out.println("记账系统》》》您确定要退出系统?(Y/N)");

                    //判断用户输入Y/N
                    String isExist = scanner.next();
                    switch (isExist) {
                        case "Y":
                            System.out.println("系统已退出,欢迎您下次继续使用!");
                            scanner.close();
                            System.exit(1);
                    }

            }

        }
    }
}

以上代码如果IO流关闭的位置不对,就会报错,比如改动如下在这里插入图片描述
在这里插入图片描述所以涉及到IO流的时候要仔细考虑什么时候关闭IO流合适;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeMartain

祝:生活蒸蒸日上!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值