今天做题遇到的……

        由于读入的字符串可能包含空格,所以采用nextLine。

int n = sc.nextInt();
for(int i=0; i<n; i++) {
  String s = sc.nextLine();
  System.out.println(s);
}

        上面的代码只会输出n-1个字符串,最后一个没有输出,原因nextInt()方法会读取下一个int型标志的token,但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头,所以这样就无法接收到下一行输入的String类型的变量。

        解决方案

int n = sc.nextInt();
for(int i=0; i<n; i++) {
  String s = sc.next();
  s += sc.nextLine();
  System.out.println(s);
}

        原因: next()方法是以换行或者空格符为分界线接收下一个String类型变量,不过并没有提取换行或者空格,所以生成的s并不包含换行。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2022-01-15
  • 2021-07-28
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-22
  • 2022-01-05
  • 2021-07-05
  • 2021-10-18
  • 2021-11-04
相关资源
相似解决方案