Java 蜜罐样本测试奇数问题
所以在蜜罐网站上有一个公开的示例测试,我对其中一个测试感到困惑Java 蜜罐样本测试奇数问题,java,Java,所以在蜜罐网站上有一个公开的示例测试,我对其中一个测试感到困惑 1您不必对每个数字应用%2。请尝试以下内容: List<Integer> arraylist = new ArrayList<Integer>(); if(l % 2 == 0) l += 1; for(int i=l; i<=r; i += 2){ arraylist.add(i); } return arraylist; List arraylist=new arraylist(); 如果(l
1您不必对每个数字应用
%2
。请尝试以下内容:
List<Integer> arraylist = new ArrayList<Integer>();
if(l % 2 == 0) l += 1;
for(int i=l; i<=r; i += 2){
arraylist.add(i);
}
return arraylist;
List arraylist=new arraylist();
如果(l%2==0)l+=1;
对于(int i=l;i如果范围开始于1
,(即l>1
),(l+i%2)==1
,其评估为(l+(i%2))==1
为假(l+(i%2))==1
只能在l==1
和i
为偶数时为真
您应该使用的是((l+i)%2)==1
此外,回路的条件应为:
i < r-l+1
你有两个错误:
(l+i%2)
:这将首先计算i%2
,然后将其添加到l
,这是错误的
r-l+2
:这应该更改为r-l+1
这将帮助您:
for (int i = 0; i < r - l + 1; i++) {
if (((l + i) % 2) == 1) arraylist.add(l + i);
}
for(inti=0;i
我不知道那些测试用例,但是你的循环看起来很奇怪。为什么不干脆for(int I=l;I考虑表达式l+I%2
的真正含义(考虑到运算符优先级)考虑l=r=2-它将失败…在这些挑战中,你没有对1@Amongalen进行任何验证吗(例如),约束不需要测试。这些都是对问题输入的假设。谢谢。我没有意识到(l+I%2)会首先计算I%2,然后再加上l。我只编写了大约2个月的代码,我有10分钟的时间来解决这个问题。这是我在10分钟内能想到的最好结果。
for (int i=l; i<=r; i++){
if((i%2)==1)
arraylist.add(i);
}
for (int i = 0; i < r - l + 1; i++) {
if (((l + i) % 2) == 1) arraylist.add(l + i);
}