我听说nextInt()只读取整数并忽略最后的\ n。 那么为什么以下代码成功运行?
为什么输入 a 的值后没有错误,因为\ n必须保留在缓冲区中, 因此在b处使用nextInt()应该会出错,但事实并非如此。为什么呢?
import java.util.Scanner;
public class useofScanner {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
int a = scanner.nextInt();
int b=scanner.nextInt();
System.out.println(a+b);
}
}
答案 0 :(得分:1)
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。然后可以使用各种下一种方法将得到的标记转换为不同类型的值。
例如,此代码允许用户从System.in中读取数字:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
另一个例子是,这段代码允许从文件myNumbers:
中的条目中分配长类型 Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
扫描仪还可以使用空格以外的分隔符。此示例从字符串中读取几个项目:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
打印以下输出:
1
2
red
blue