当前位置: 首页 > 知识库问答 >
问题:

打印二维矩阵(数组)爪哇

胡承悦
2023-03-14

我需要以正确的二维数组格式打印此内容。哎呀,这是错误的。需要从方法打印。我的输出似乎是一个无限循环

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);

共有3个答案

隆钊
2023-03-14

您缺少一个}并在第二个循环中使用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();
    }
}
慕容高卓
2023-03-14

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

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会。这就是为什么你会得到丑陋的打印。

此外,< code>printArray不应返回值,它应该是:

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

我想这就是你得到无限循环的地方。不要退回任何东西-不需要,你只是打印它。

杨飞
2023-03-14

正如我在之前的回答中告诉你的,再次调用相同的方法返回printArray(矩阵);在您的方法结束时可能会导致再次(一次又一次)调用它,直到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));       
}
 类似资料:
  • 问题内容: 如何以矩阵框格式打印出简单的int [] [],就像我们在其中手写矩阵的格式那样。简单的循环运行显然无效。如果有帮助,我正在尝试在linux ssh终端中编译此代码。 问题答案: 产生:

  • 本文向大家介绍螺旋打印矩阵,包括了螺旋打印矩阵的使用技巧和注意事项,需要的朋友参考一下 该算法用于以螺旋方式打印数组元素。首先,从第一行开始,先打印全部内容,然后按照最后一列打印,然后再最后一行,依此类推,从而以螺旋方式打印元素。  该算法的时间复杂度为O(MN),M为行数,N为列数。 输入输出 算法 输入: 矩阵矩阵,行和列m和n。 输出:以螺旋方式打印矩阵的元素。 示例 输出结果

  • NowCoder 题目描述 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 解题思路 // java public ArrayList printMatrix(int[][] matrix) { ArrayList ret = new ArrayList<>(); int r1 = 0, r2

  • 我想用一个整数的方法打印一个螺旋矩阵。然而,我在纸上的代码运行得很好,但是当我运行时,我会得到不同的数字来代替我想要的数字。 在现实中,它应该打印如下内容 如果您能帮忙,我们将不胜感激。

  • 一、题目 输入一个矩阵,按照从外向里以顺时针的顺序依次扫印出每一个数字。 二、解题思路 把打印一圈分为四步:第一步从左到右打印一行,第二步从上到下打印一列,第三步从右到左打印一行,第四步从下到上打印一列。每一步我们根据起始坐标和终止坐标用一个循环就能打印出一行或者一列。 不过值得注意的是,最后一圈有可能退化成只有一行、只有一列,甚至只有一个数字,因此打印这样的一圈就不再需要四步。 因此我们要仔细分

  • 表示为一个 4x4 matrix. 在3D计算机图形学中,4x4矩阵最常用的用法是作为一个变换矩阵Transformation Matrix。 有关WebGL中使用的变换矩阵的介绍,请参阅本教程this tutorial。 这使得表示三维空间中的一个点的向量Vector3通过乘以矩阵来进行转换,如平移、旋转、剪切、缩放、反射、正交或透视投影等。这就是把矩阵应用到向量上。 任何3D物体Object3