无法确定并发现数组并在数组中向前跳过

时间:2014-03-19 21:03:06

标签: java arrays loops

我正在编写一个程序来从一个图像中读取一个条形码,然后生成一个由1和0组成的数组,我从中生成0到9之间的数字。为此,我必须采用7位序列中的原始数组,并将它们与另一个数组进行比较,以确定该模式所代表的数字。在条形码的中间有5条线将左图案与右图案分开(这意味着左边的光学反转)。我遇到问题就是抓住阵列的中间位置并向前跳了五个位置。它的95位6是打开和关闭模式,不代表数字,然后是中间的5位模式。我在45岁时抓住它并将其提前到50但这并没有产生正确的结果。我检查过几次,以确保这些是正确的值,他们似乎是,但他们没有工作。以下是字符串形式的原始1和0集:

10100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101

这是代码num是原始数组(上面是什么),numTemp是我正在使用的当前7位模式(以及num的子集)。

   int tempIndex = 0;

    if (start == 45) {
            start = 50;

        }
        while (start < end) {
            numTemp[tempIndex] = num[start];
            start++;
            tempIndex++;
        }
        end = end + 7;

        System.out.println(" ");
        for (int x = 0; x < 7; x++) {
            System.out.print(numTemp[x]);
        }

有一个更大的循环包围了这个和更多,但我并不认为它太相关。基本上从3开始,从10开始结束,并且两者都继续递增,直到较大的循环运行12次(由7位模式表示的数字的数量)。

正如你所看到的,我在这里打印出每个numTemp模式的输出:

>0011001 
>0010011 
>0111101 
>0100011 
>0110001 
>0101111 
>**1001111** 
>0010010 
>0100011 
>1010011 
>1001011 
>0011011 

前6个模式是正确的,但下一个模式(粗体)应为0111011,因此以下模式不正确。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

你确定大胆的价值,因为据我所知,它在50 - 57范围内我得到1000100,但无论如何这是我想出的,也许它会帮助你。我使用数据作为字符串,你可以使用数组或任何你需要的东西来重新构建它。

for (int i = 3; i < (CODE.length() - 3); i += 7) {
        if (i == 45) {
            i = 43;
        } else {
            printOut("line " + i + " - " + (i+7) + " = "+ CODE.substring(i, i+7));
        }
    }