无法理解扫描仪对象的工作及其方法(nextInt、next、nextLine)



我有以下几行代码。我无法理解如何使用Scanner:逐行读取输入

import java.util.Scanner;
public class HackerRank
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("================================");
for(int i=0;i<3;i++)
{
String s1=sc.next();
int s2 = sc.nextInt();
sc.nextLine();
System.out.printf("%-15s%03d%n", s1,s2);
}
System.out.println("================================");
}

标准输入:

Java 100
CPP 65
Python 125

此外,请让我知道,如果我在printf语句之后使用sc.nextLine();,它会有什么变化。

让我们看看这个输入(忽略for循环(:

Java 100

你有这3行代码:

String s1=sc.next();   //Line 1
int s2 = sc.nextInt(); //Line 2
sc.nextLine();         //Line 3
  • 第1行读取输入的第一部分(Java(
  • 第2行读取int-值,这是输入的第二部分
  • 如果按在每行末尾输入,则第3行读取换行符

如果没有sc.nextLine(),输入的其他变体也会产生相同的输出。

例如单行中的输入

Java 100 CPP 65 Python 125

然后也会产生这样的输出:

Java           100
CPP            065
Python         125

对于sc.nextLine();,如果该行中有任何后续输入,则该行的其余部分将被跳过。

然后,单行输入

Java 100 CPP 65

将只打印输入的前两个元素:

Java           100

如果在每次输入后按Enter,则在切换代码中的sc.nextLine()printf行时没有区别。

nextInt((方法返回输入的下一行中的下一个整数。next((方法从扫描程序返回下一个完整的令牌。nextLine((方法";使该扫描仪前进经过当前行并返回跳过的输入">

这个页面会很有帮助。

最新更新