我需要以正确的二维数组格式打印它。太糟糕了。需要从方法打印。我的输出似乎是一个无限循环。
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);
答案 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