Java-在2D数组中查找索引

时间:2017-10-10 21:07:47

标签: java multidimensional-array indexof

我有一个主要是连续整数的2D数组。我想获取用户的整数输入并找到比用户输入少的整数索引。

我手动声明了我的数组中的前两列,剩下的12列是从不同数组中随机分配的整数。

public static int[][] board = new int[4][14];

  public static int[][] deal(int[] cards) {


    board[0][0] = 1;
    board[0][1] = 0;
    board[1][0] = 14;
    board[1][1] =0;
    board[2][0] = 27;
    board[2][1] = 0;
    board[3][0] = 40;
    board[3][1] = 0;


    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 12; j++) {
            board[i][j + 2] = cards[j + (i * 12)];
        }

    } return board;

}

我试图找到比用户输入小的整数,如果下面的整数(在同一行中)是0,则交换0和用户的输入。 我意识到数组没有内置函数indexOf,以下代码不会运行。

 public static int[][] move(int[][] board) {

    int input;
    int place =0;
    if(board.indexOf(input-1) +1 == 0){
        place =board.indexOf(input);
        board.indexOf(input) = 0;
        board.indexOf(input-1) +1 = place;
    }
    return board;

}

1 个答案:

答案 0 :(得分:0)

如果你真的想使用函数索引,你需要切换到List的List(即ArrayList,Vector等)。然后你的代码将是这样的

public static ArrayList<ArrayList<Integer>> deal(int[] cards) {
   ArrayList<ArrayList<Integer>> board = new ArrayList<ArrayList<Integer>>();
   for(int  i = 0; i < 4; i++) {
       board.add(new ArrayList<Integer>);
   }
   board.get(0).add(1);
   board.get(0).add(0);
   board.get(1).add(14);
   board.get(1).add(0);
   board.get(2).add(27);
   board.get(2).add(0);
   board.get(3).add(40);
   board.get(3).add(0);

   for (int i = 0; i < 4; i++) {
     for (int j = 0; j < 12; j++) {
         board.get(i).add(cards[j + (i * 12)]);
     }
   } 
  return board;
}

你可以做的另一件事(因为Lists在性能方面的开销更好)是编写你自己的indexOf()函数,如下所示返回一个整数数组,因为在2D数组索引中意味着两个整数(row和col) ):

int[] indexOf(int [] [] ar, int row, int col, int x) { //this function will find x in 2D array ar(with dimension of row*col) and return the index
   int [] index = new int [2];
   index [0] = index[1] = -1; 
   for(int i = 0; i<row; i++) {
        for(int j = 0; j<col; j++) {
            if(ar[i][j] == x) {
               index[0] = i;
               index[1] = j;
               return index;
            }
        }
    }
    return index;
}