在java中转置矩阵时遇到错误

xzlaal3s  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(340)

我必须确保我读入一个文本文件(输入)并转换矩阵,从而行变成列。
样本输入:

2 4
abcd/
efgh

(其中2表示行,4表示列和/表示新行),输出应如下所示:

ae/
bf/
cg/
dh

这是我的密码:

import java.util.*;

public class Transpose {
    private void run() {
        Scanner scan=new Scanner(System.in);
        int Row= scan.nextInt();
        int Col=scan.nextInt();
        char[][] arr=new char[Row][Col];
        for(int i=0;i<Row;i++){
            for(int j=0;j<Col;j++){
                arr[i][j]=scan.next().charAt(0);
            }
        }
        for(int j=0;j<Col;j++){
            for(int i=0;i<Row;i++){
                System.out.print(arr[i][j]);
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Transpose newTranspose = new Transpose();
        newTranspose.run();
    }
}

然而,我得到了一个错误:程序崩溃/产生非零退出代码这是一个运行时错误,我该如何着手解决这个问题。

x7yiwoj4

x7yiwoj41#

这应该管用

public class Transpose {
    private void run() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Row");
        int Row = scan.nextInt();
        System.out.println("Col");
        int Col = scan.nextInt();
        char[][] arr = new char[Row][Col];
        for (int i = 0; i < Row; i++) {
            for (int j = 0; j < Col; j++) {
                System.out.println("Enter character");
                arr[i][j] = scan.next().charAt(0);
            }
        }
        for (int j = 0; j < Col; j++) {
            for (int i = 0; i < Row; i++) {
                System.out.println(arr[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Transpose newTranspose = new Transpose();
        newTranspose.run();
    }
}

具有所需输出

6yt4nkrj

6yt4nkrj2#

试试这个。

Scanner scan = new Scanner(System.in);
int Row = scan.nextInt();
int Col = scan.nextInt();
scan.nextLine();    // skip newline.
char[][] arr = new char[Row][Col];
for (int i = 0; i < Row; i++) {
    String line = scan.nextLine();
    for (int j = 0; j < Col; j++) {
        arr[i][j] = line.charAt(j);
    }
}
for (int j = 0; j < Col; j++) {
    for (int i = 0; i < Row; i++) {
        System.out.print(arr[i][j]);
    }
    System.out.println();
}

输入:

2 4
abcd
efgh

输出:

ae
bf
cg
dh

相关问题