我有以下几行代码。我无法理解如何使用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((方法";使该扫描仪前进经过当前行并返回跳过的输入">
这个页面会很有帮助。