【发布时间】:2015-06-11 19:31:43
【问题描述】:
我有 array[110] 填充整数(行)位(只有 1 和 0), 我需要通过输出将其划分为少 7 行位并重复跳过,从数组 [110] 的某个(标记为数字 2 的下一个幂)索引开始到此数组 [110] 的末尾。
现在通过 7 个不同的行(组、数组),我的意思是位的行,从索引是数字 2 的下一个幂的位开始,所以:1,2,4,8,16,32... 同样在每个下一行(组),必须输出值并按索引数跳过,这是数组中数字 2 的下一个幂。因此,例如输出 4,跳过 4... 或输出 8,跳过 8,等等到最后一组,其中数组中的索引是 2 的下一个幂。
此外,这个较小行的第一位总是被跳过或标记为未知(“?”)
我会认为数组 [110] 中的索引从 1 开始,而不是像数组中的自然那样从 0 开始 - 更容易描述我的问题.
在示例中(我在“()”中标记了数组的索引): 1(1),1(2), 0(3), 0(4), 1(5), 1(6), 1(7), 0(8), 1(9), 1(10), 0(11).
在本例中,第 1 组(输出 1,跳过 1)将是:1(1)
第二组将是(从索引 2 开始;输出 2 并跳过 2;第一个值被认为是未知的): 1(2)
第三组将是(从索引 4 开始,作为 2 的下一个幂;输出 4 并跳过 4;第一个值未知): 0(4)
它是汉明码的一部分。为了更好地理解:https://www.youtube.com/watch?v=JAMLuxdHH8o
现在,我的方法是创建 7 个不同的数组,例如 group1[]、group2[]... 并手动插入某些我想跳过的索引。然后在 for 循环中,我只用“输出”位填充每个下一个 group[] 数组。
但我希望 for 循环为我重复执行此操作。只需在此处编码以跳过每个 2、4、8(等等)值并输出每个 2、4、8(...)值。因此 7 个 group[] 数组具有不同但静态的输出和跳过“距离”。怎么办?
我的代码是:
int skip2 []= {3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47,
50,51,54,55,58,59,62,63,66,67,70,71,74,75,78,79,82,83,86,87,90,91,94,95,98,99,102,103,106,107};
for (int j : skip2)
{
System.out.print(tab[j] + "("+j+")"+",");
if (j%25==0)
{
System.out.println("");
}
}
对于后面组的更大值(这是来自第 5 组,因此从 16 索引开始 - 但由于未知而跳过它):
for (int m=17; m<110; m++)
{
if ((m>=32 && m<=47) && (m>=64 && m<=79) && (m>=96 && m<=111)) continue;
System.out.print(tab[m] + "("+m+")"+",");
if (m%16==0)
{
System.out.println("");
}
}
第二种方法更数学,因为我必须计算有多少索引跳过。不过也许有办法写出多少个输出和多少个跳过?
【问题讨论】:
标签: java arrays for-loop hamming-code