java—获取一个2d数组并搜索一个数字,然后输出一个布尔数组

kx1ctssn  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(330)

我在创建一个将二维整数数组作为输入的方法时遇到了问题。输出将是第二个二维数组,在第一个数组的相应行中有相等数量的元素,这一次元素的类型将是布尔型的。输出值将与数组中存在的值多次对应。
这里我举了一个例子:
如果 inputArray 方法的输出将是以下布尔数组: [[ 4, 9], [ 9, 5, 3]] . 由于9在输入数组中出现了两次,因此输出中与这两个示例对应的两个位置都是true,其他所有值只出现一次,因此它们的值都是false,如下所示 [[ false, true ], [ true, false, false]] .
代码如下所示。

class SearchAndPrint{

public static void main(String[] args){
  int[][] testCase = 
    {{4, 9, 10, 9},
    {5, 4, 7, 10, 11},
    {4, 2}};

System.out.println("The test case array: ");
  for (int i=0; i<testCase.length; i++){
    for (int j=0; j<testCase[i].length; j++){ 
      System.out.print(testCase[i][j]+" ");
    }
    System.out.println();      
  }        

  boolean[][] founds = gridOfMultiples(testCase);
  System.out.println("Positions with repeated numbers are marked below: ");

}

public static boolean[][] gridOfMultiples(int[][] inputArray){
      boolean [][] gridOfMultiples = new boolean[inputArray.length][];
      Arrays.fill(gridOfMultiples, false);
      for(int i=0; i<inputArray.length.length; i++){
        for (int j=0; j<inputArray.length[i]; j++){
          if(inputArray.length[i][j]==inputArray.length[i][j]){
         gridOfMultiples[i][j] = true;
       break;
  }
          return gridOfMultiples;
}

 }
  return whoIsPrime;
 }
2w3kk1z5

2w3kk1z51#

下面是如何对单个d数组执行此操作。数组迭代两次,然后将数组的每个后续值与所有其他值进行比较。请注意 known size 自动初始化为所有 false 价值观。

int [] vals = {1,2,3,2,4,5,6,4,9,4};
boolean[] bools = new boolean[vals.length];
for (int i = 0; i < vals.length-1; i++) {
    for (int k = i+1; k < vals.length; k++) {
        if (vals[i] == vals[k]) {
            // ensure both are true but continue checking
            // as there may be more duplicate values.
            bools[i] = true; 
            bools[k] = true;
        }
    }
}
System.out.println(Arrays.toString(bools));

印刷品

[false, true, false, true, true, false, false, true, false, true]

只有2和4出现多次。

相关问题