java中的nextInt()

时间:2016-07-03 17:30:00

标签: java exception io

我听说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);
    }
    }

1 个答案:

答案 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