无法打印/获取2D数组的特定行

时间:2018-04-04 10:17:31

标签: java arrays multidimensional-array formatting println

假设我有一个多维数组,为简单起见,我们会说只保存数字:

double[][] MDarray = new double[10][20]

所以这将是20行乘10列。通过我的程序工作方式,写入这些元素意味着每行的最后10-15个元素可能只用'0'填充,这里是我的MD数组与填充元素一样的示例:

[
[0, 1, 2, 3, 4, 5, 6, 0, 0, ..]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 0, ..]
[0, 1, 2, 3, 4, 0, 0, ..]
.. etc

如何访问特定行?该MD阵列应该是将结果保存到我的程序的数据结构。这个程序有一个'胜利者',所以如果程序决定'7'是胜利者,那么这个数组的第8行保存了完成程序代码的基础数据。

尝试打印这样的结果:

int bestResult = 7;
System.out.println("The best result is by " + bestResult +  ": ");
        for(int j = 0; j < RT[bestResult].length; j++) { 
            System.out.print(RT[bestResult][j]+" - "); 
           }

只会打印错误的元素!例如,我知道数组中的答案应该打印出来:

11 - 10 - 0 - 0 - 0 ..etc

相反,它打印前一行中的元素/打印随机无意义:

4 - 0 - 11 - 10 - 0 - 0 - 0 ..etc 

试图像这样打印它:

System.out.println(Arrays.deepToString(MDarray));

有证据表明数据正确存储在我的数组中,因为每次都会打印完全正确的结果

所以我的问题是:是否有使用Arrays.deepToString()或类似方法打印和访问结果的方法?我主要想要访问获胜结果的行,修剪多余的0(我将在解决此问题后找出)并将结果发送到Web应用程序以供使用。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

  

如何只访问特定行?

您可以通过返回第一个维度的元素以及所需行号的索引来访问二维数组的行。

代码示例:

double[][] array = {{1,1,1},{2,2,2},{3,3,3}};

double[] winner = array[0]; 

winner将对应于数组的第一个“行”。输出:

System.out.println(Arrays.toString(winner));

然后会给你结果:

[1.0, 1.0, 1.0]

答案 1 :(得分:1)

  

double[][] MDarray = new double[10][20]

     

所以这将是20行乘10列。通过我的程序的工作方式,   写入这些元素意味着最终的10-15个元素   每一行都可能只填充'0',这是一个例子   我的MD数组与填充元素的相似之处:

     

[[0,1,2,3,4,5,6,0,0,..] [0,1,2,3,4,5,6,7,8,0 ......]   [0,1,2,3,4,0,0,..]等等

我认为您误解了多维数组的工作原理。

我正在引用的突出显示的代码行实际上是每行创建10行,每行20列。访问多维数组的具体行的方法就像您之前所做的那样:

System.out.println(cool_MDarray[myFavoriteRow].length);

或访问其成员:

System.out.println("Element is: "+md_array[index_row][index_col].toString());

尽管如此,如果这些都不是您的问题,我建议您检查一下您填充MD阵列的方式。