Java 中的弗里曼链码

Freeman Chain Code in Java

好的,希望这更有意义。我有一个只用 1 和 0 硬编码的数组。我正在尝试编写一个函数来读取每个元素以查看它是 0 还是 1。如果它是 1,它将执行另一个函数,然后将 1 更改为 0,这样它就不会被再次读取。我将它简单地打印为我稍后将要实现的其他功能的占位符。我无法使用 findfirst1 函数来检查数组中的每个元素。我试过将 i 和 k 的增量器放在代码流中的不同位置,但我没有尝试得到正确的输出。

public static void main(String[] args)
{
    int[][] testarray = {{1,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,0,0,0,0,0,0,1}};

    findfirst1(testarray);
}

public static void findfirst1(int[][] array1) 
{
    int value = 0;
    for(int i = 0; i < 6;i++)
    {
        for(int k = 0; k < 7;k++)
        {
            value = array1[i][k];
            if(value == 1)
            {
                System.out.println(value);
                array1[i][k] = 0;
            }
            else
            {
                System.out.println(value);
            }
        }
    }

}

好的,所以在完全重新开始并从头开始编写之后,我想通了。 array.length 一直都是对的。我很难理解它,因为我太专注于 "image".

的想法了

编辑:我刚刚发现一个错误,它不会打印 array1 的最后一行,所以我只是添加了一行额外的 0,它起作用了。

public class ChainCodeClass {

public static void main(String[] args)
{
    int[][] array1 = {{0,1,0,0,0,0,0,0},{0,1,0,0,0,1,0,0},{0,1,1,1,0,0,1,0},
            {0,0,0,1,1,0,0,1},{0,0,0,0,1,0,0,1},{0,0,0,0,0,1,0,0},
            {0,0,0,0,0,0,1,0}**,{0,0,0,0,0,0,0,0}**};

    int[][] array2 = {{0,0,0,0,0,0,0,0},{0,1,1,1,1,0,1,0},{0,0,0,0,1,0,1,0},
            {0,0,1,1,1,0,1,0},{0,0,1,0,0,0,1,0},{0,0,1,0,0,0,1,0},{0,0,0,0,0,0,1,1},
            {0,0,0,0,0,0,0,0}};

    System.out.print("First Image");
    print(array1);
    findfirst1(array1);
    print(array1);

    System.out.print("Second Image");
    print(array2);
    outline8(array2);
}

public static void findfirst1(int[][] array) 
{
    int value = 0;
    for(int i = 0; i < array.length; i++)
    {
        for(int k = 0; k < array.length; k++)
        {
            value = array[i][k];
            if(value == 1)
            {
                System.out.print(value + "  ");
                array[i][k] = 0;
            }
            else
            {
                System.out.println(value);
            }
        }
    }

}

public static void print(int[][] array)
{
for(int i = 0; i < array.length; i++) // print function for the array using incrementors
{
    System.out.print("\n");

    for(int k = 0; k < array.length; k++)
    {
        System.out.print(array[i][k] + "    ");
    }
}
    System.out.println();
}
 }