第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时结束使用。
缺陷的原因:加入了多余的功能。
学习心得:方便使用最重要。