使用方法
Scanner in = new Scanner(.......);
最常见的是写System.in
从键盘读入内容,申请一个输入流。
也可以用字符串输入流文件等来直接构建这个对象
InputStream s = new FileInputStream(new File(path))
Scanner in = new Scanner(s);
这种情况下编译器往往会有resource leak 资源泄露的警告
其实也可以忽略的
处理方法1
加上@Suppression
来抑制警告
处理方法2
最后加上in.close();
就相当于一个水龙头,打开了要关上。
当然不关也就是警告一下(又不是文件打开不关 没什么大不了的)
常用的方法
Scanner 里面提供的一些常用的方法
in.useDelimiter("…");
这个方法就会让里面的东西被当成分割符(默认的是空格)
in.Next();
返回一个String 是以空格为分割的
in.NextLine();
则返回的是包括了空格的一行
例如输入abc def
前者返回abc
后者返回abc def
类似的还有NextInt()之类各种指定数据类型的方法
检查下文的方法:
hasNext();
hasNextLine();
只是检查有没有下一段。返回类型是布尔类。
升级版
hasNextInt();
小用法
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("请输入数字些");
if(in.hasNextInt())
{
String s = in.next();
System.out.print(s);
}
in.close();
}
}
hasNext()这类方法会让你键盘往里输入东西 但是他还是返回的是布尔类型 ,所以输入的还存储在里面。到遇到 s = in.next()
才把这些东西输出去。