[英]How to print the contents of a 2-D array using an overloaded function in Java
我正在学习 Java Programming Class,我目前正在研究一个投资组合。 通常,我能够完成这些,但是帮助了解 arrays 的产品组合是一个巨大的挑战。 我已经被困在一个特定的步骤(步骤 5、b、ii)上一段时间了,我真的找不到任何解决方案。 几年前有一个论坛帖子,他有一组非常相似的步骤,但解决方案没有帮助。 这些是到目前为止的步骤:
在名为ArrayPrinter
的 class 中启动一个程序。 暂时忽略主要方法。
在您的 class 中,创建一个名为printArray
的 static 方法,其中一个int[]
类型的参数名为arr
。 在此方法中,执行以下操作:
一个。 使用 System.out.print() 将此方法中的所有 output 保留在一行上,直到被指示使用println()
。 湾。 显示一个左方括号字符。 c。 循环遍历传递给方法的数组。 显示数组中的值。 在除最后一个值之外的每个值之后添加一个逗号和一个空格。 d。 使用System.out.println()
,显示右方括号字符。
在您的 main 方法中,创建以下数组:
int[] oneD = {5, 6, 7, 8};
将此数组的引用传递给printArray
方法,运行您的程序,并验证它是否按预期工作。 (注意。这按预期工作。)
在您的 main 方法中,在您刚刚调用的方法之后添加一个空白println()
语句。
在 class 中,创建一个名为printArray
的重载 static 方法,其中一个名为arr
的int[][]
类型参数。 在此方法中,执行以下操作:
一个。 使用println()
,显示一个左方括号字符。 湾。 循环遍历传入方法的二维数组。 一世。 首先,使用 System.out.print() 显示两个空格字符。 ii. 您正在循环的这个二维数组的每个元素都是一个 int 的一维数组。 调用另一个printArray
方法并将其传递给二维数组中的每个一维数组。 c。 使用println()
,显示右方括号字符。
在您的 main 方法中,创建以下二维数组。 将此数组的引用传递给printArray
方法,运行您的程序,并验证它是否按预期工作。
在您的 main 方法中,在您刚刚调用的方法之后添加一个空白println()
语句。
在此之后还有几个步骤,但这是我停下来尝试找出问题所在的地方。 如前所述,我的主要问题是步骤 5、b、ii。 它说调用另一个printArray
方法并将其传递给二维printArray
方法中的循环。 这就是我迷路的地方。 我仍然执行了第 6 步和第 7 步,但如果不确保此操作有效,我将无法进一步执行 go。
与 Java (但也有点不同)有类似项目的人在与我相同的步骤上遇到了问题。响应是使用以下行:
print(int[] arr);
我试过了,但得到了两个错误:
“方法 print(int[]::arr) 未定义用于类型 ArrayPrinter”和“令牌“]”上的语法错误,:: 预期在此令牌之后”
public class ArrayPrinter {
public static void main(String[]args) {
int[] oneD = {5, 6, 7, 8};
printArray(oneD);
System.out.println();
int[][] twoD = {{2, 4, 6, 8},
{8, 7, 9, 1},
{3, 5, 1, 2}};
printArray(twoD);
}
public static void printArray(int[] arr) {
System.out.print("[");
for(int i = 0; i < arr.length; i++) {
if(i < arr.length -1) {
System.out.print(arr[i] + ", ");
} else {
System.out.print(arr[i]);
}
}
System.out.println("]");
}
public static void printArray(int[][] arr) {
System.out.println("[");
for(int i = 0; i < arr.length; i++) {
for(int i2 = 0; i2 < arr[i].length; i2++) {
System.out.print(" ");
}
}
System.out.println("]");
}
}
如果没有错误,它应该打印出如下内容:
[5, 6, 7, 8]
[
[2, 4, 6, 8]
[8, 7, 9, 1]
[3, 5, 1, 2]
]
但相反,它只打印:
[5, 6, 7, 8]
我还收到了我在代码上方显示的错误消息。
package data.structures;
public class LinkedListRunner {
public static void main(String[]args) {
int[] oneD = {5, 6, 7, 8};
printArray(oneD);
System.out.println();
int[][] twoD = {{2, 4, 6, 8},
{8, 7, 9, 1},
{3, 5, 1, 2}};
printArray(twoD);
}
public static void printArray(int[] arr) {
System.out.print("[");
for(int i = 0; i < arr.length; i++) {
if(i < arr.length -1) {
System.out.print(arr[i] + ", ");
} else {
System.out.print(arr[i]);
}
}
System.out.println("]");
}
public static void printArray(int[][] arr) {
System.out.println(" [ ");
for(int i=0;i<arr.length;i++) {
System.out.print("[");
for(int j=0;j<arr[0].length;j++) {
System.out.print(" " + arr[i][j] + " ");
}
System.out.println("]");
}
System.out.println("]");
}
}
Output:
[5, 6, 7, 8]
[
[ 2 4 6 8 ]
[ 8 7 9 1 ]
[ 3 5 1 2 ]
]
您可以尝试一下,问题出在打印输出上。您实际上创建了一个二维数组参数,但没有使用遍历行和列的索引值将其打印出来...所以这基本上是错误。这:System.out.print(" " + arr[i][j] + " ");
在printArray(int[][] arr)
function 中,删除内部循环并用printArray(arr[i])
替换它,它将完成这项工作。
本质上,二维数组是一个数组,其中数组的元素是一维 arrays 本身。 您已经有一个有效的 function 打印一维数组,因此只需在外循环上迭代二维数组,然后调用 function 为每个元素打印一维数组。 这样,您的代码更少,更少的代码意味着更少的错误潜伏的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.