【问题标题】:Finding amount of times item has been repeated in an unsorted 2D array - Java查找项目在未排序的二维数组中重复的次数 - Java
【发布时间】:2017-11-22 18:00:22
【问题描述】:

我只是在练习二维数组,目前我正在尝试定位给定数字的行和列的位置。数组未排序。

我可以用 10-20 的随机数填充数组。它知道重复找到该数字的次数,但是对于与用户选择的数字匹配的每个项目,我需要打印项目的坐标,而这正是我所缺少的。

这是我的代码:

   int cont = 0;
   int num;

   public void number (){

        matrixnn = new int [10][10];

        num = Integer.parseInt(JOptionPane.showInputDialog("Pick a number from 10-20 "));

       for(int i = 0; i < matrixnn.length; i++ ){
           for (int j = 0; j < matrixnn[i].length; j++){

               matrixnn [i][j] = (int)(Math.random()*(20-10+1)+10);

               if(num == matriznx[i][j]){
                   cont++;    
               }   
            System.out.print(matrixnn[i][j]+" ");           
       }     
         System.out.println();
    }

        System.out.println("\nThe number selected "+num+" has been found "+cont+" times."); 
        System.out.println("  ");   
}

【问题讨论】:

  • 如果需要打印索引i和j。
  • 谢谢。但是,如果我这样做,它只会在找到的数字旁边打印数字。找到 12 [这将是 if 中的任何输出]。

标签: java arrays loops


【解决方案1】:

正如 Heisenberg 所说,要仅打印与用户输入匹配的索引,您需要做的第一件事是在 if 语句中打印 i 和 j 索引。其次,当您想要打印实际的索引编号时,您当前编写的打印语句的方式实际上会打印索引的 value。您只需打印出i 和j 即可。我建议将其更改为:

if(num == matriznx[i][j]){
  cont++;
  System.out.println("[" + i + "][" + j + "]");  //prints as "[0][4]", for example)
}   

【讨论】:

    【解决方案2】:

    您可以尝试创建一个长度为宽度 * 高度的数组,宽度为 2,并存储在第 15 行找到的坐标。即

    index = 0
    
    if(num == matriznx[i][j]){
        cont++;
        coordinates[index][1] = j
        coordinates[index++][2] = i    
    }  
    

    然后在程序结束时使用循环打印出结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多