【问题标题】:How to repetitively output and skip certain values from array by loop?如何通过循环重复输出和跳过数组中的某些值?
【发布时间】: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


    【解决方案1】:

    已解决:

            int x=0;
            int sum=0;
            boolean w = true;
            System.out.println("Bity potegi CZWARTEJ");
            for (int i = 0; i < 110; i++)
            {
                if (i<=4) continue;
    
                x++;
                if (x == 4)
                {
                    x = 0;
                    w = !w;
                }
    
    
                if (i%20==0) System.out.println("");
                if (w) System.out.print(tab[i]+"("+i+")"+",");
                sum++;
                if (i==109) System.out.println("\n"+sum);
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多