写这个题的时候遇到了一件非常奇怪的事情,如果我用scanner.nextInt()来读取数据的话,会报内存超限错误,只能得到80分,使用内存为293M,代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int r = scanner.nextInt();
int c = scanner.nextInt();
int[][] image = new int[r][c];
for(int i = 0; i < r; i++){
for(int j = 0; j < c; j++){
image[i][j] = scanner.nextInt();
}
}
scanner.close();
for(int j = c - 1; j >= 0; j--){
for(int i = 0; i < r; i++){
System.out.print(image[i][j] + " ");
}
System.out.println();
}
}
}
但是当我把读取数据换成scanner.nextLine(),并且逐个转换为int的时候,内存只用了93M,并且能拿到满分,代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] firstLine = scanner.nextLine().split(" ");
int r = Integer.parseInt(firstLine[0]);
int c = Integer.parseInt(firstLine[1]);
int[][] image = new int[r][c];
for(int i = 0; i < r; i++){
String[] line = scanner.nextLine().split(" ");
for(int j = 0; j < c; j++){
image[i][j] = Integer.parseInt(line[j]);
}
}
scanner.close();
for(int j = c - 1; j >= 0; j--){
for(int i = 0; i < r; i++){
System.out.print(image[i][j] + " ");
}
System.out.println();
}
}
}
不知道有没有大神能帮我解答下这个神奇的问题
自从遇到这个问题以后,我每次读取数据都会使用scanner.nextLine(),即使代码不那么好看