Java Arraylist程序测试失败
我正在创建一个程序,当给定一个列表时,返回一个新的整数列表,其中前两个元素保持不变,后面的每个元素是原始列表中以该位置结尾的三个元素的中间值。例如,给定列表:Java Arraylist程序测试失败,java,list,arraylist,Java,List,Arraylist,我正在创建一个程序,当给定一个列表时,返回一个新的整数列表,其中前两个元素保持不变,后面的每个元素是原始列表中以该位置结尾的三个元素的中间值。例如,给定列表:[1,2,3,4,5,6,7,8,9],程序将返回:[1,2,2,3,4,5,6,7,8] 这是我编写的代码,在这里我得到了正确的结果,但它使我的测试人员失败。我不确定我是否漏掉了一个奇怪的案例。是的,你漏掉了一些案例: 如果一个或多个数字相等,则代码不会计算中值 解决方案whitch将根据您的代码工作: public static
[1,2,3,4,5,6,7,8,9]
,程序将返回:[1,2,2,3,4,5,6,7,8]
这是我编写的代码,在这里我得到了正确的结果,但它使我的测试人员失败。我不确定我是否漏掉了一个奇怪的案例。是的,你漏掉了一些案例:
如果一个或多个数字相等,则代码不会计算中值
解决方案whitch将根据您的代码工作:
public static List<Integer> method(List<Integer> items) {
List<Integer> list = new ArrayList<Integer>();
int size = items.size();
if (size == 0) {
list = Arrays.asList();
} else if (size == 1) {
int first = items.get(0);
list.add(first);
} else if (size == 2) {
int first = items.get(0);
list.add(first);
int second = items.get(1);
list.add(second);
} else {
int first = items.get(0);
int second = items.get(1);
list.add(first);
list.add(second);
for (int i = 2; i < size; i++) {
int med;
if (items.get(i) <= items.get(i - 1) && items.get(i) >= items.get(i - 2)
|| items.get(i) >= items.get(i - 1) && items.get(i) <= items.get(i - 2)) {
med = items.get(i);
} else if (items.get(i - 1) <= items.get(i) && items.get(i - 1) >= items.get(i - 2)
|| items.get(i - 1) >= items.get(i) && items.get(i - 1) <= items.get(i - 2)) {
med = items.get(i - 1);
} else {
med = items.get(i - 2);
}
list.add(med);
}
}
return list;
}
公共静态列表方法(列表项){
列表=新的ArrayList();
int size=items.size();
如果(大小==0){
list=Arrays.asList();
}否则如果(大小==1){
int first=items.get(0);
列表。添加(第一);
}否则如果(大小==2){
int first=items.get(0);
列表。添加(第一);
int second=items.get(1);
列表。添加(第二);
}否则{
int first=items.get(0);
int second=items.get(1);
列表。添加(第一);
列表。添加(第二);
对于(int i=2;i ||items.get(i)>=items.get(i-1)和&items.get(i)=items.get(i)和&items.get(i-1)那么,您的测试人员测试的是什么?您是否一步一步地调试了失败的测试?这是我的类中使用的测试人员。我可以发布其中的代码?我将重点提供一个测试,只提供失败的测试情况。如果您认为您的代码是正确的,您应该仔细检查失败的测试-您同意它的测试内容吗ng?@BeanieLeung我完全同意Jon的观点,一个最小的例子是最好的。但我还是建议你也发布测试代码,它是你评估和示例的一个相关部分。我发布了测试人员