为什么Java Scanner无法读取所有行?

这是我的代码,它仅从输入流中读取行并显示它们,但令我惊讶的是它没有读取所有行.它的读数只能读到倒数第二行.

这是我的代码:-

import java.util.*;

public class Solution {

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    short n = scan.nextShort();
    short m = scan.nextShort();
    byte[][] topics = new byte[n][m];
    for(short i = 0; i < n; i++){
        char[] arr = scan.nextLine().toCharArray();
        display(arr);

    }
}

private static void display(char[] arr){
    for(int i = 0; i < arr.length; i++){
        System.out.print(arr[i]);
    }
    System.out.println();
  }
 }

输入以这种格式给出

  4 5
 10101
 11100
 11010
 00101

我的输出是这样的:

 10101
 11100
 11010

它没有第三行.为什么?

解决方法:

在for循环之前添加scan.nextLine(),以读取第一行的末尾(包含“ 4 5”).没有它,循环内对scan.nextLine()的第一次调用将返回一个空String.

上一篇:java-从InputStream读取最快的方法是什么?


下一篇:java-Android文件到字符串