打印二维矩阵(数组)java

时间:2013-06-14 23:24:38

标签: java arrays

我需要以正确的二维数组格式打印它。太糟糕了。需要从方法打印。我的输出似乎是一个无限循环。

import java.util.Scanner;
public class hw3 {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("What is the dimension of your matrix?");
    int matrixdim = input.nextInt();
    double[][] matrix = new double[matrixdim][matrixdim];

    System.out.println("Enter " + matrixdim + " rows, and " + matrixdim + " columns." );
    Scanner input1= new Scanner(System.in);
    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length; column++)
            matrix[row][column] = input1.nextDouble();
    }
    System.out.println("Your original array:");

    System.out.println(printArray(matrix));
}   
public static double printArray(double matrix[][]){
    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length;column++) {
        System.out.println(matrix[row][column] + " ");
    }
    System.out.println();
}
return printArray(matrix);

4 个答案:

答案 0 :(得分:12)

正如我在previous answer中告诉你的那样,在你的方法结束时再次调用return printArray(matrix);会导致再次(再次)调用它,直到StackOverflow错误。

将退货类型更改为void。现在你的方法看起来像

public static void printArray(double matrix[][]) {
    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length; column++) {
            System.out.print(matrix[row][column] + " ");
        }
        System.out.println();
    }
}

甚至更好

public static void printArray(double matrix[][]) {
    for (double[] row : matrix) 
        System.out.println(Arrays.toString(row));       
}

答案 1 :(得分:2)

只需在第一次打印调用中将println更改为print即可。

public static void printArray(double matrix[][]){
    for (...) {
        for (...) {
            //here just print goes
            System.out.print(matrix[row][column] + " ");
        }
        //at the end each row of the matrix you want the new line - println is good here
        System.out.println();
    }
}

print不会在输出结尾处打印换行符(\n),而println会打印。这就是为什么你会得到丑陋的印刷品。

此外,printArray不应返回值,应为:

public static void printArray(double[][] matrix)

我认为这就是你获得无限循环的地方。不要退货 - 不需要,你只是打印它。

答案 2 :(得分:1)

您错过了}并在第二个循环中使用print而不是println

public static double printArray(double matrix[][])
{
    for (int row = 0; row < matrix.length; row++) 
    {
        for (int column = 0; column < matrix[row].length;column++) 
        {
            System.out.print(matrix[row][column] + " ");
        }
        System.out.println();
    }
}

答案 3 :(得分:0)

您获得了System.out.println(printArray(matrix));而非printArray(matrix);,因为您的方法无论如何都会在其中获得打印调用

并如上所述 - print vs println