为什么我输错了输出?

时间:2016-11-21 18:47:36

标签: java

我不确定为什么我在第一次测试运行中返回false,如测试表附件中所示。这是我上学期的任务之一,我从未想出如何解决它:/我的任务是:

写一个方法的定义,oddsMatchEvens,其两个参数是相等大小的整数数组。每个数组的大小是偶数。当且仅当第一个数组的偶数索引元素按顺序等于第二个数组的奇数索引元素时,该方法返回true。也就是说,如果w是第一个数组,q是第二个数组,w[0]等于q[1]w[2]等于q[3],依此类推。

测试表

enter image description here

我的代码是:

public boolean oddsMatchEvens(int[] w, int[] q) {
    int count = 0;

    for (int i = 0; i < w.length; i++) {
        if (w[i] == q[i + 1])
            count++;

        if (count == (w.length - 1))
            return true;     
    }
    return false;
}

3 个答案:

答案 0 :(得分:0)

if (count == (w.length - 1))
    return true;

这是错误的,因为你只需要比较w.length / 2指数。

如果w [i]!= q [i + 1],你应该返回false。

你应该将i增加2,而不是增加1。

答案 1 :(得分:0)

代码存在两个问题: 首先,明确提到两个输入数组的长度相等,你必须将它们甚至索引与奇数索引进行比较。因此,当您使用第二个数组的最后+ 1项检查第一个数组的最后一项时,会出现转角情况(由于数组的长度相等,因此不存在。 其次,你必须检查第一个数组,即使第二个数组奇数,所以增量应该是i + = 2而不是i ++。 通过优化纠正代码(如果一次检查失败,您可以退出循环):

public boolean oddsMatchEvens(int[] w, int[] q) {
    for (int i = 0; i < w.length-1; i+=2) {

         if (w[i] != q[i + 1])
            return false;
         else
            continue;
    }

    return true;
}

答案 2 :(得分:0)

public boolean oddsMatchEvens (int []w, int []q) {
    for (int j = 0; j < w.length-1; j+=2) {
        if (w [j] != q [j+1])
            return false;
            continue;
        }
            return true;
}
相关问题