不能 print/obtain 二维数组的特定行
Can't print/obtain specific rows of a 2D array
假设我有一个多维数组,为了简单起见,我们假设它只包含数字:
double[][] MDarray = new double[10][20]
所以这将是 20 行 x 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 数组应该是一个数据结构,将结果保存到我的程序中。该程序有一个 'winner',因此如果程序决定“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
相反,它打印来自先前 rows/prints 随机废话的元素:
4 - 0 - 11 - 10 - 0 - 0 - 0 ..etc
但是尝试像这样打印它:
System.out.println(Arrays.deepToString(MDarray));
证明数据已正确存储在我的阵列中,因为它每次 打印的结果都完全正确。
所以我的问题是:是否有一种方法可以使用 Arrays.deepToString() 或类似方法来打印和访问结果?我主要想访问获胜结果的行,trim 去掉多余的 0(我会在解决这个问题后弄清楚)并将结果发送到 Web 应用程序以供使用。
感谢大家的帮助。
How does one access just a specific row?
您可以通过返回具有所需行号索引的第一维元素来访问二维数组的行。
代码示例:
double[][] array = {{1,1,1},{2,2,2},{3,3,3}};
double[] winner = array[0];
winner
将对应于数组的第一个 "row"。输出:
System.out.println(Arrays.toString(winner));
然后会给你结果:
[1.0, 1.0, 1.0]
double[][] MDarray = new double[10][20]
So this will be 20 rows by 10 columns. With the way my program works,
writing into these elements means that the final 10-15 elements of
every row will likely be populated with just '0's, here is an example
of what my MD array's would look like with populated elements:
[ [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
我认为你误解了多维数组的工作原理。
我引用的突出显示的代码行实际上创建了 10 行,每行 20 列。访问多维数组的具体行的方法就像您之前所做的那样:
System.out.println(cool_MDarray[myFavoriteRow].length);
或访问其中的一个成员:
System.out.println("Element is: "+md_array[index_row][index_col].toString());
不过,如果其中 none 个是您的问题,我建议您检查填充 MD 阵列的方式。
假设我有一个多维数组,为了简单起见,我们假设它只包含数字:
double[][] MDarray = new double[10][20]
所以这将是 20 行 x 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 数组应该是一个数据结构,将结果保存到我的程序中。该程序有一个 'winner',因此如果程序决定“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
相反,它打印来自先前 rows/prints 随机废话的元素:
4 - 0 - 11 - 10 - 0 - 0 - 0 ..etc
但是尝试像这样打印它:
System.out.println(Arrays.deepToString(MDarray));
证明数据已正确存储在我的阵列中,因为它每次 打印的结果都完全正确。
所以我的问题是:是否有一种方法可以使用 Arrays.deepToString() 或类似方法来打印和访问结果?我主要想访问获胜结果的行,trim 去掉多余的 0(我会在解决这个问题后弄清楚)并将结果发送到 Web 应用程序以供使用。 感谢大家的帮助。
How does one access just a specific row?
您可以通过返回具有所需行号索引的第一维元素来访问二维数组的行。
代码示例:
double[][] array = {{1,1,1},{2,2,2},{3,3,3}};
double[] winner = array[0];
winner
将对应于数组的第一个 "row"。输出:
System.out.println(Arrays.toString(winner));
然后会给你结果:
[1.0, 1.0, 1.0]
double[][] MDarray = new double[10][20]
So this will be 20 rows by 10 columns. With the way my program works, writing into these elements means that the final 10-15 elements of every row will likely be populated with just '0's, here is an example of what my MD array's would look like with populated elements:
[ [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
我认为你误解了多维数组的工作原理。
我引用的突出显示的代码行实际上创建了 10 行,每行 20 列。访问多维数组的具体行的方法就像您之前所做的那样:
System.out.println(cool_MDarray[myFavoriteRow].length);
或访问其中的一个成员:
System.out.println("Element is: "+md_array[index_row][index_col].toString());
不过,如果其中 none 个是您的问题,我建议您检查填充 MD 阵列的方式。