无法在java中的以下方法中找到错误

时间:2013-07-09 00:26:31

标签: java class methods arraylist

我正在我的类中编写一个名为ArrayIntList的方法。该类有两个字段,一个int和int数组,表示数组的长度。我在这里忽略了构造函数,并直接转到我遇到问题的方法。我试图编写的方法是longestSortedSequence,它将返回列表中最长的排序整数序列的int类型。例如,这将返回

[1, 3, 5, 2, 9, 7, -3, 0, 42, 308, 17] ---> 4,
[1, 2, 3, 4, 0, 19, 1, 1, 2, 2, 3, 3]----> 6

以下代码适用于第一种情况,但在第二种情况下失败,我无法理解原因。

public class ArrayIntList {
    private int[] elementData;
    private int size;



public int longestSortedSequence() {
    //this stores the longest sequence possible
    int max_count=0;
    //this stores the counts till not sorted sequence is encountered
    // and is flushed to zero before the next counting begins
    int count=0;
    int i=0;
    while(i<size-1) {
        if (elementData[i]<=elementData[i+1]){
            count++;
        }
        else {
            max_count=Math.max(max_count,count+1);
            count=0;
        }
        i++;
    }
    return max_count;
}

任何帮助都会非常感激吗? 感谢

2 个答案:

答案 0 :(得分:2)

如果您检测到序列的结尾(max_count分支),则只分配else

如果你的第二个例子,最长的序列在最后(6),但你的代码永远不会有机会分配给max_count

将作业从max_count移出else。然后,您的if也已经投放,因此count已经增加,与{{1}进行比较时,无需将1添加到count }}

答案 1 :(得分:1)

更改了代码:

    while(i<size-1) {
            if (elementData[i]<=elementData[i+1]){
                count++;
            }
            else {
                max_count=Math.max(max_count,count+1);
                count=0;
            }
            i++;
        }
// added following 1 line.
    max_count=Math.max(max_count,count+1);
        return max_count;