任朝暮 发表于 2021-12-22 21:14:37

有大佬看看这个1代码为什么运行不了吗?

import java.util.Scanner;

public class work01 {
        //本金
        private static int principal = 1000;
        //记录语句
        private static String record = "\n收支明细\t\t账户金额\t\t收支金额\t\t说    明\n----\t\t"+principal+"\t\t----\t\t本    金\n";
        //用于保存记录语句
        private static StringBuffer sb = new StringBuffer();
        //创建输入对象
        private static Scanner sc = new Scanner(System.in);
       
        /**
       *主方法
       * @param args
       */
        public static void main(String[] args) {
                // 将语句加到StringBuffer对象sb里
                sb.append(record);
                // 定义循环标志位,用于退出时跳出循环
                boolean loopFlag = true;
                do {
                        // 显示菜单
                        view();
                        // 接收菜单选项的编号
                        int menuCode = getMenuCode();
                        // 选择菜单执行相应内容
                        switch(menuCode) {
                                case 1:
                                        // 打印收支明细
                                        System.out.println(sb);
                                        break;
                                case 2:
                                        // 添加收入记录
                                        selectSecond();
                                        break;
                                case 3:
                                        // 添加支出记录
                                        selectThird();
                                        break;
                                case 4:
                                        // 退出系统
                                        System.out.print("是否确认退出(Y/N):");
                                        // 接收字符Y或N
                                        char c = getYesOrNo();
                                        // 接收到Y时给循环标志位赋值False跳出循环退出系统
                                        if(c=='Y') loopFlag = false;
                                        break;
                        }
                } while (loopFlag );

        }
       
        /**
       * 打印菜单信息
       */
        public static void view() {
                System.out.println("\n-------------------------------家庭收支记账软件-------------------------------\n");
                System.out.println("                                 1.收支明细");
                System.out.println("                                 2.收入金额");
                System.out.println("                                 3.支出金额");
                System.out.println("                                 4.退       出\n");
                System.out.print("请输入选择序号:");
        }
       
        /**
       * 获取数字
       * @return
       */
        public static int getNumber() {
                int num = -1;
                // 判断是否有输入
                while(sc.hasNext()) {
                        // 输入是否为int类型
                        if (sc.hasNextInt()) {
                                // 接收输入的数字
                                num = sc.nextInt();
                                break;
                        }else {
                                System.out.print("没有所选项,请重新输入:");
                                // 输入
                                sc.next();
                        }
                }
                return num;
        }
       
        /**
       * 获取菜单选项序号
       * @return
       */
        public static int getMenuCode() {
                int menuCode;
                for(;;) {
                        // 调用getNumber()方法接收数字
                        menuCode = getNumber();
                        // 判断数字是否为1 2 3 4
                        if (menuCode==1 || menuCode==2 || menuCode==3 || menuCode==4) {
                                break;
                        }else {
                                System.out.print("没有所选项,请重新输入:");
                        }
                }
                return menuCode;
        }
       
        /**
       * 获取字母YN
       * @return
       */
        public static char getYesOrNo() {
                char c;
                for(;;) {
                        // sc.next() 接收字符串    toUpperCase() 字符串转大写charAt(0) 截取第一个字符
                        c = sc.next().toUpperCase().charAt(0);
                        // 判断截取字符是否为YN
                        if ('Y' == c || 'N' == c) {
                                break;
                        }else {
                                System.out.print("没有所选项,请重新输入:");
                        }
                }
                return c;
        }
       
        /**
       * 添加收入记录
       */
        public static void selectSecond() {
                System.out.print("收入金额:");
                // 收入金额
                int income = getNumber();
                // 本金 = 本金 + 支出金额
                principal += income;
                System.out.print("说       明:");
                // 说明文字
                String des = sc.next();
                String str = "收入\t\t"+principal+"\t\t"+income+"\t\t"+des+"\n";
                sb.append(str);
        }
       
        /**
       * 添加支出记录
       */
        public static void selectThird() {
                System.out.print("支出金额:");
                // 支出金额
                int outlay = getNumber();
                // 本金 = 本金 - 支出金额
                principal -= outlay;
                System.out.print("说       明:");
                // 说明文字
                String des = sc.next();
                String str = "收入\t\t"+principal+"\t\t"+outlay+"\t\t"+des+"\n";
                sb.append(str);
        }
               
}

jayden518 发表于 2021-12-23 11:08:04

.

任朝暮 发表于 2021-12-24 08:35:49

搞定了

412046761 发表于 2021-12-26 11:43:12

代码没有问题
import java.util.Scanner;上面是不是少package 路径。
页: [1]
查看完整版本: 有大佬看看这个1代码为什么运行不了吗?