运行长度编码(输出数据中每个重复序列的长度以及数据值)

时间:2019-06-06 10:20:37

标签: java

我想在某些数据和数据值中输出每个重复序列的长度。 因此,如果数据为7,7,2,9,9,9,3,3,6 我应该得到7 2, 2 1, 9 3, 3 2, 6 1

我是java的新手,无法调试我的代码,我尝试运行以下代码,但未获得完整的输出。我不知道该如何调试?

final int ARRAY_SIZE = 9;
int data[]={7,7,2,9,9,9,3,3,6};
int val=data[0];
int length=1;
for (int index = 1; index < ARRAY_SIZE; index++)
if (data[index]==val)
 length++;
 else
{
 System.out.println(val+" with length "+ length);
 val=data[index];
 length=1;
}

O / P:

7 with length 2
2 with length 1
9 with length 3
3 with length 2

预期的O / P:

7 with length 2
2 with length 1
9 with length 3
3 with length 2
6 with length 1

1 个答案:

答案 0 :(得分:2)

每次通过循环时,循环都会增加长度或打印,然后覆盖先前的值和长度。

这遗漏的是循环结束后内存中的val和length,因为没有下一个元素可以打印它们。

只需在循环结束后添加另一个println,就像这样:

final int ARRAY_SIZE = 9;
int data[]={7,7,2,9,9,9,3,3,6};
int val=data[0];
int length=1;
for (int index = 1; index < ARRAY_SIZE; index++){
    if (data[index]==val)
        length++;
    else {
        System.out.println(val+" with length "+ length);
        val=data[index];
        length=1;
    }
}
System.out.println(val+" with length "+ length);