java中的Scanner类用于读取用户输入,类似于C++中的std::cin,但Scanner类对于不同的数据类型提供了不同的输入方式,在此做个记录。
在使用前,需要先实例化Scanner对象,Scanner对象包含于java.util包下
package java.util;
import java.nio.file.Path;
import java.nio.file.Files;
import java.util.regex.*;
import java.io.*;
import java.math.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
import java.text.*;
import java.util.Locale;
import sun.misc.LRUCache;
public final class Scanner implements Iterator<String>, Closeable{
}
从Scanner类的定义中,实现了Iterator和Closeable接口,简要记录Iterator就是迭代器接口,在java的集合中使用较多,而Closeable接口则是可以实现自动关闭的接口,后面有时间会再将这两个接口解析一下。
public class MyScanner {
public static void main(String[] args) {
//实例化Scanner类
java.util.Scanner s = new java.util.Scanner(System.in);
//Scanner使用next方法默认输入字符串,但无法输入包含空格的字符串
String text = s.next();
System.out.println(text);
}
}
输入结果如下:
可以使用nextLine()方法输入带有空格的字符串:
//输入包含空格的字符串
String str = s.nextLine();
System.out.println(str);
运行结果如下:
这段代码中实例化了一个Scanner类,并使用系统输入作为参数,读入字节输入流,方法原型如下:
public Scanner(InputStream source) {
}
另外还可以对其指定字符编码格式:
public Scanner(InputStream source, String charsetName) {
}
输入整数
int integer = s.nextInt();
System.out.println(integer);
使用nextInt()方法可以输入int形整数,默认十进制,可以使用radix()方法查看Scanner的进制。若想使用其他进制,则也可以自己使用userRadix设定进制:
java.util.Scanner s = new java.util.Scanner(System.in);
//默认十进制
System.out.println("初始进制:" + s.radix());
//设置为十六进制
s.useRadix(16);
System.out.println("调整后进制:" + s.radix());
//输入整数
int integer = s.nextInt();
//设置为10进制并输出输入的16进制数
s.useRadix(10);
System.out.println("调整进制:" + s.radix());
System.out.println("十进制数:" + integer);
输入显示的结果如下:
同样的也提供了对于short等其他类型的输入方法:
public short nextShort() {
}
public long nextLong() {
}
public double nextDouble() {
}
public float nextFloat() {
}
//对于大数也提供了BigInteger的输入
public BigInteger nextBigInteger() {
}
//对于BigDecimal类型也提供了相应的输入方式
public BigDecimal nextBigDecimal(){
}
日拱一卒,功不唐捐。