1.测试帖链接:http://www.cnblogs.com/k511959373/p/6607191.html
2.测试人员提出的问题、发现的缺陷:
(1).代码一开始不能运行,存在大量0xa1,即大量非法空格。
(2).题目要求为float方法,而定义方法时使用double方法,导致位数不匹配的错误,即定义float com=0,而实际上应写成float com=0f;
(3).没有对非整数输入进行判断。用例1,2可以明显看出程序不支持字符的输入,并且会使程序崩溃。
(4).while(1)这个判断条件太宽泛,应该写判断输入是否为非数字的情况,由于我的C语言基础不好,这里就不赘述了。
3.修正后的代码清单:
package test;
import java.util.Scanner;;
public class com {
public static float commission(int headphone,int shell,int protector){
float sum=headphone*80+shell*10+protector*8;
float com=0;
if(sum>=0&&sum<=1000){
com=(float) (sum*0.1);
}else if(sum<=1800){
com=(float) (100+(sum-1000)*0.15);
}else{
sum=(float) (220+(sum-1800)*0.2);
}
return com;
}
public static void main(String[] args) {
boolean b=true;
int headphone,shell,protector;
while(b){
System.out.println("请分别输入三种手机配件的销售情况:\n");
Scanner scanner = new Scanner(System.in);
try{
headphone=scanner.nextInt();
shell=scanner.nextInt();
protector=scanner.nextInt();
if(headphone<0 || shell<0 || protector<0){
if(headphone==-1){
System.out.println("退出");
break;
}else{
System.out.println("输入数量不满足条件");
}
}else{
float com=0;
com=commission(headphone,shell,protector);
System.out.println("佣金额为:"+com);
}}catch(java.util.InputMismatchException e){
System.out.println("输入的不是整数,请再次输入");
b = true;
}
}
}
}
4.修正后心得体会:
(1)存在大量非法空格是因为第一次写博客的时候不知道可以插入代码而直接复制粘贴进去,粘贴之后所有行都是自动左对齐,为了程序好看,手动添加了空格。
(2)double一开始使用c++写的时候没注意到,后来交实验报告的时候是用java重新写了一份,当时就已经改成float。
(3)对非整数的判断采用tyr...catch 来捕捉异常,目前已经能够对非法输入进行识别。
(4)准确的说应该是要输入整数而不是数字,非整数的识别已经完成。
(5)程序最大的问题是非法输入会导致程序崩溃,自己测试的时候其实有发现这个bug,在实验报告里也写了,那时候是觉得输入就该是输入整数,稍微提了一下就过去了, 这是我自己的失误。每个自己觉得“无关紧要”的bug都可能是致命的。
浙公网安备 33010602011771号