第2次作业+105032014141

1.测试帖链接:http://www.cnblogs.com/pter/p/6599598.html

   UT原码链接:http://www.cnblogs.com/tangyangbin/p/6533016.html

2.测试人员提出的问题、发现的缺陷

建议用循环结构来处理持续的数据输入,从而不需用户输入“是”或“否”。

3.修正后的代码清单

让用户输入是和否是为了知道用户什么时候停止使用,我认为即使题目需求是可以持续输入,但是程序依然需要一个出口,不能让程序就一直运行着,用户可以循环使用,但是当用户不想使用了也可以退出来,考虑到用户每查询一次就要输入是否太麻烦,代码修正为当用户输入三个0退出程序。

修正后的代码如下:

package demo;

import java.util.Scanner;

public class Commission {
    
    private static final double xv = 80.0;
    private static final double yv = 10.0;
    private static final double zv = 8.0;
    // 计算佣金
    public static double commission(int xn, int yn, int zn){
        double res = 0.0;
        double cnt = xn * xv + yn * yv + zn * zv;
        if(cnt < 1000){
            res = cnt * 0.1; // 小于 1000
        }else{
            res = 100;
            if(cnt < 1800){
                res = res + (cnt - 1000) * 0.15; // 大于 1000 小于 1800
            }else{
                res = res + 120 + (cnt - 1800) * 0.2; // 大于 1800
            }
        }
        return res;
    }
    // 字符串转整数
    private static int String2Integer(String s){
        int res = 0;
        s = s.trim();
        String [] sArray = s.split("\\s+");
        if(1 != sArray.length){ // 输入不止一个字符串
            res = -1;
        }else{
            try{
                res = Integer.parseInt(sArray[0]);
                if(res < 0){
                    res =  -1;
                }
            }catch(Exception e){
                res = -1; // 输入的字符串含有非法字符
            }
        }
        return res;
    }
    public static void main(String args[]){
        
    //    String flag = "是";
        Scanner scanner = new Scanner(System.in);
        java.text.DecimalFormat format =
                new java.text.DecimalFormat("#0.00"); // 格式化输出
        
    //    while("是".equals(flag)){
        while(true){
            int xn = -1, yn = -1, zn = -1;
            System.out.println("请分别输入三种手机配件的销售情况:");
            System.out.print("请输入耳机销售情况:");
            do{
                xn = String2Integer(scanner.next());
                if(-1 == xn){
                    System.out.print("输入数量不满足要求,请重新输入:");
                }
            }while(-1 == xn);
            System.out.print("请输入手机壳销售情况:");
            do{
                yn = String2Integer(scanner.next());
                if(-1 == yn){
                    System.out.print("输入数量不满足要求,请重新输入:");
                }
            }while(-1 == yn);
            System.out.print("请输入手机贴膜销售情况:");
            do{
                zn = String2Integer(scanner.next());
                if(-1 == zn){
                    System.out.print("输入数量不满足要求,请重新输入:");
                }
            }while(-1 == zn);
            double res = commission(xn, yn, zn);
            System.out.println("获得的销售佣金为:" + format.format(res) + " 元.");
    /*        System.out.print("\n是否继续使用《是 或 否》: ");
            boolean error = false;
            do{
                error = false;
                flag = scanner.next();
                if(!("是".equals(flag))&&!("否".equals(flag))){
                    error = true;
                    System.out.print("输入有误,请输入《是 或 否》:");
                }
            }while(error);
    */
            if(xn==0 && yn==0 && zn==0){
                break;
            }
            System.out.println("");
        }
        System.out.println("感谢您的使用!");
        scanner.close();
    }
}

4.修正后心得体会:

代码变更:把用是和否判断程序出口改成了当用户输入三个0时结束使用。

缺陷的原因:加入了多余的功能。

学习心得:方便使用最重要。

posted @ 2017-03-26 14:34  141_汤阳斌  Views(157)  Comments(0Edit  收藏  举报