在OJ中有时需要读取一个未给定大小的矩阵,这个看似简单的问题,其实处理起来还是有点麻烦,在一次笔试中在这上面吃苦头了,后面研究了好久,找到了一个解决方案,于此分享,望有帮助。
import java.util.*;
public class Main{
//从键盘中读取一个矩阵
public static int [][] ReadMatrix(){
Scanner sc = new Scanner(System.in);
List<List<String>> list = new ArrayList<>();//用一个List将原始数据以字符串存储
String Line=null;
while((Line=sc.nextLine()).length()!=0){
list.add(Arrays.asList(Line.trim().split(" ")));
}
sc.close();
int m = list.size();
int n = list.get(0).size();
int [][] matrix = new int[m][n];
//将字符串变为int类型
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++){
matrix[i][j]= Integer.parseInt(list.get(i).get(j));
}
}
return matrix;
}
//打印验证
public static void main(String[] args) {
int [][] matrix = ReadMatrix();
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
System.out.print(matrix[i][j]+" ");
}
System.out.println("\n");
}
}
}