【问题标题】:How to get odd or even lines from a two-dimensional array?如何从二维数组中获取奇数行或偶数行?
【发布时间】:2021-08-01 08:00:04
【问题描述】:

如何从二维数组中得到奇数行或偶数行?

String myData [][] = {
        {"test1","test1","test1","test1"},
        {"test2","test2","test2","test2"},
        {"test3","test3","test3","test3"},
        {"test4","test4","test4","test4"},
        {"test5","test5","test5","test5"},
        {"test6","test6","test6","test6"}
    };

并将它们写入 1 或 2 个新数组。 需要得到:

String oddLines [][] = { 
    {"test1","test1","test1","test1"},
    {"test3","test3","test3","test3"},
    {"test5","test5","test5","test5"}};

String evenLines [][] = { 
    {"test2","test2","test2","test2"},
    {"test4","test4","test4","test4"},
    {"test6","test6","test6","test6"}};

myData 数组大小未知,可能是

【问题讨论】:

    标签: java android arrays


    【解决方案1】:

    我会使用模数。通常在java中,要检查一个数字是偶数还是奇数,你使用模数。 如果var 是偶数,则var % 2 == 0 返回。所以你可以像这样使用它:

    String myData [][] = {
            {"test1","test1","test1","test1"},
            {"test2","test2","test2","test2"},
            {"test3","test3","test3","test3"},
            {"test4","test4","test4","test4"},
            {"test5","test5","test5","test5"},
            {"test6","test6","test6","test6"}
    };
    List<String[]> evenLines = new ArrayList<>();
    List<String[]> oddLines = new ArrayList<>();
    for (int i = 0; i < myData.length; i++) {
      if (i % 2 == 0) evenLines.add(myData[i]);
      else oddLines.add(myData[i]);
    }
    

    检查它是否有效:

    System.out.print("Even lines:");
    evenLines.forEach((s) -> {
        for(String string : s) System.out.print(" " + string);
    });
    System.out.print("\nOdd lines:");
    oddLines.forEach((s) -> {
        for(String string : s) System.out.print(" " + string);
    });
    

    输出:

    Even lines:  test1 test1 test1 test1 test3 test3 test3 test3 test5 test5 test5 test5
    Odd lines: test2 test2 test2 test2 test4 test4 test4 test4 test6 test6 test6 test6
    

    【讨论】:

      【解决方案2】:

      你可以使用数学。你知道会有一半是偶数,一半是奇数。您可以使用它和循环将值从原始数组复制到新数组。类似的,

      String[][] evenLines = new String[myData.length / 2][];
      String[][] oddLines = new String[myData.length - evenLines.length][];
      for (int i = 0; i < myData.length; i++) {
          oddLines[i / 2] = myData[i];
          if (i + 1 < myData.length) {
              evenLines[i / 2] = myData[i + 1];
              i++;
          }
      }
      System.out.printf("oddLines: %s%n", Arrays.deepToString(oddLines));
      System.out.printf("evenLines: %s%n", Arrays.deepToString(evenLines));
      

      输出

      oddLines: [[test1, test1, test1, test1], [test3, test3, test3, test3], [test5, test5, test5, test5]]
      evenLines: [[test2, test2, test2, test2], [test4, test4, test4, test4], [test6, test6, test6, test6]]
      

      【讨论】:

        猜你喜欢
        • 2020-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 2012-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多