A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 宋达思 于 2016-1-23 17:09 编辑

大家好,因为Eclipse用的不多,正好自己写的代码运行时有个小瑕疵,所以问老师后,老师告诉我用Debug调试一下变量,不过我用的也是糊里糊涂的,请大家指点一下,谢谢! 因为是基础班,所以我这个代码并没有封装方法,不过代码挺简单的,应该不会影响大家观看的,我会在附件里把以下的几个图片直接存在里面的,看不清图片的附件可以下载,大家可以拷贝下代码运行看看。以下为需求及代码:


//==============定义变量=========================================================
//为了让多个case都可以使用这些变量,所以将这些变量定义到了swtich外边
//定义各种商品的属性变量
import java.util.Scanner;
public class TicketDemo3{
        public static void main(String[] args){
                String slsID="(090115)";
                String slsName="嵩山少林寺酥饼核桃";
                double slsPrice=15.50;
                int slsNum=0;
                String slsUnit="克";
                double slsSum=0;
               
                String rgID="(090028)";
                String rgName="然光a移";
                double rgPrice=16.00;
                int rgNum=0;
                String rgUnit="个";
                double rgSum=0;
                Scanner sc=new Scanner(System.in);
//==============每一次完整的购物操作=========================================================
                //使用while(true)死循环,让下一个用户继续使用系统
                while(true){
                        //提示用户输入操作
                        System.out.println("");
                        System.out.println("            欢    迎    光    临    ");
                        System.out.println("请输入指定数据:1.代表开始购物;2.代表结账(打印小票);3.不想买了,直接退出");
                        System.out.println("");
                        //定义变量,接收用户输入的操作
                        int enterNum=sc.nextInt();
                        
                        //使用switch完成不同的操作
                        switch(enterNum){//完成购物动作:给变量赋值
                                        //a:打印商品报价单
                                        //打印数据
                                case 1:
                                        System.out.println("   商品编号"+"      "+"商品名称"+"                "+"商品单价"+"     "+"计价单位");
                                        System.out.println("   "+slsID+"      "+slsName+"      "+slsPrice+"            "+slsUnit);
                                        System.out.println("   "+rgID+"      "+rgName+"                 "+rgPrice+"            "+rgUnit);
                                        //-------------------------------------------------------------------------
                                        //b:根据商品报价单,用户输入数据
                                        System.out.println("请输入嵩山少林寺酥饼核桃的购买数量:");
                                        slsNum=sc.nextInt();
                                        slsSum=slsNum*slsPrice;
                                        System.out.println("请输入然光a移的购买数量:");
                                        rgNum=sc.nextInt();
                                        rgSum=rgNum*rgPrice;
                                        break;
                                case 2://打印购物小票
                                        //-------打印票头-------------------------------------------------------------------------
                                        System.out.println("            欢    迎    光    临    ");
                                        System.out.println("    品名            售价  数量  金额");
                                        System.out.println("----------------------------------------------------");
                                        slsName=(slsName.length()>7)?slsName.substring(0,7)+"...":slsName;
                                        rgName=(rgName.length()>7)?rgName.substring(0,7)+"...":rgName;
                                        System.out.println(slsName+" :"+slsPrice+"*"+slsNum+"="+slsSum);
                                        System.out.println(slsID);
                                        System.out.println(rgName+" :          "+rgPrice+"*"+rgNum+"="+rgSum);
                                        System.out.println(rgID);
                                        System.out.println("----------------------------------------------------");
                                        //-------打印票脚-------------------------------------------------------------------------
                                        int totalNum=slsNum+rgNum;
                                        double totalCost=slsSum+rgSum;
                                       
                                        //定义变量,记录打折后的钱
                                        double totalCost0=totalCost;
                                       
                                        //统计打印之前判断是否需要打折:
                                        //如果商品总价超过300元,打95折
                                        //如果商品总价超过600元,打9折
                                        //如果商品总价超过1000元,并且少林寺酥饼核桃购买超过30份, 则总价打8折后,立减20
                                        if(totalCost>=300 && totalCost<=600){
                                                totalCost0=totalCost*0.95;
                                        }else if(totalCost>=600 && totalCost<=1000){
                                                totalCost0=totalCost*0.9;
                                        }else if(totalCost>=1000){
                                                totalCost0=totalCost*0.9;
                                                if(slsNum>=30){
                                                        totalCost0=totalCost*0.8-20;
                                                }
                                        }                                
                                        //totalCost0=Math.round(totalCost0);//由于不符合实际需求,这里就将四舍五入删掉了。
                                        //完成打印票脚动作
                                        System.out.println("共计:"+totalNum+"件");
                                        System.out.println("总计(含打折):"+totalCost0+"元。"+"年底大促销,此次共为您节省"+(totalCost-totalCost0)+"元");
                                        //重置数据,防止BUG出现,比如先选了购物,然后不买了,下个用户再买,不清0的话会有上一次的价钱。
                                        slsNum=0;
                                        slsSum=0;
                                        rgNum=0;
                                        rgSum=0;
                                        break;
                                case 3://用户放弃购买的逻辑
                                        System.out.println("感谢您的惠顾,欢迎下次光临!");
                                        //重置数据,防止BUG出现
                                        slsNum=0;
                                        slsSum=0;
                                        rgNum=0;
                                        rgSum=0;
                                        break;
                                default://用户输入错误的逻辑
                                        System.out.println("您输入的数字有误,请重新输入!");
                                        //重置数据,防止BUG出现
                                        slsNum=0;
                                        slsSum=0;
                                        rgNum=0;
                                        rgSum=0;
                                        break;
                        }
                }
        }
}

运行基本是没有问题的,不过我想调试下totalCost0的值,从刚开始定义到打印语句前if判断后之间的值,但一上来是提示错误的:


然后点红方块右面的小箭头图标向下运行就有值了:


我想问问,红方块右面有3个小箭头,分别是什么意思?英语不好,另外工作或今后的学习中,Debug调试变量用的多吗?

4 个回复

倒序浏览
跳进方法  向下执行  跳出
回复 使用道具 举报
洋葱头头 发表于 2016-1-23 13:05
跳进方法  向下执行  跳出

哦 那为什么一上来Debug会提示错误呢?
回复 使用道具 举报
看不清图 估计是你没买东西 所以没值把
回复 使用道具 举报
在你要打断点的那一行代码的行号处双击,会出现一个小圆点,程序运行到此处就会停止,点击红框后面的第二个按钮程序会向下运行一行,每点一次运行一行,鼠标放到已经运行的代码的变量上,就会显示一个小框,能看到这个变量的赋值情况。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马