尤圣回 发表于 2012-9-23 11:02
Scanner in = new Scanner(System.in);和c语言的Scanf输入是一样的 就好像打印语句在java中是print 在c中是 ...
其实java中也有printf()方法.作者: 张忠豹 时间: 2012-9-23 17:40
其实二者实现的效果是以一样的,就看个人的喜好,不过个人对于从终端获取输入的数据,更喜欢Scanner一点,毕竟该类可以对不同类型进行直接的获取,比如nextInt,nextBoolean等,如果是纯粹的IO流的操作,还需要进行相应的转换操作,多出了一步,这是本人所不赞同的。作者: 霍明波 时间: 2012-9-23 20:31
已解决,我再研究研究作者: 杨华东 时间: 2012-9-24 12:31
我更喜欢 System.in的录入方式作者: 柳彬 时间: 2012-9-24 12:51
public final class Scannerextends Objectimplements Iterator<String>一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 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 以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close();
Scanner的功能适合获取想要的数据,Buffer具体有缓存,具体谁好,要看你的用途。