繁体   English   中英

如何使用 Java 中的重载 function 打印二维数组的内容

[英]How to print the contents of a 2-D array using an overloaded function in Java

我正在学习 Java Programming Class,我目前正在研究一个投资组合。 通常,我能够完成这些,但是帮助了解 arrays 的产品组合是一个巨大的挑战。 我已经被困在一个特定的步骤(步骤 5、b、ii)上一段时间了,我真的找不到任何解决方案。 几年前有一个论坛帖子,他有一组非常相似的步骤,但解决方案没有帮助。 这些是到目前为止的步骤:

  1. 在名为ArrayPrinter的 class 中启动一个程序。 暂时忽略主要方法。

  2. 在您的 class 中,创建一个名为printArray的 static 方法,其中一个int[]类型的参数名为arr 在此方法中,执行以下操作:

    一个。 使用 System.out.print() 将此方法中的所有 output 保留在一行上,直到被指示使用println() 湾。 显示一个左方括号字符。 c。 循环遍历传递给方法的数组。 显示数组中的值。 在除最后一个值之外的每个值之后添加一个逗号和一个空格。 d。 使用System.out.println() ,显示右方括号字符。

  3. 在您的 main 方法中,创建以下数组:

    int[] oneD = {5, 6, 7, 8};

将此数组的引用传递给printArray方法,运行您的程序,并验证它是否按预期工作。 (注意。这按预期工作。)

  1. 在您的 main 方法中,在您刚刚调用的方法之后添加一个空白println()语句。

  2. 在 class 中,创建一个名为printArray的重载 static 方法,其中一个名为arrint[][]类型参数。 在此方法中,执行以下操作:

    一个。 使用println() ,显示一个左方括号字符。 湾。 循环遍历传入方法的二维数组。 一世。 首先,使用 System.out.print() 显示两个空格字符。 ii. 您正在循环的这个二维数组的每个元素都是一个 int 的一维数组。 调用另一个printArray方法并将其传递给二维数组中的每个一维数组。 c。 使用println() ,显示右方括号字符。

  3. 在您的 main 方法中,创建以下二维数组。 将此数组的引用传递给printArray方法,运行您的程序,并验证它是否按预期工作。

  4. 在您的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM