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);
    }