import java.util.Scanner;
import java.math.*;
import java.text.*;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigInteger a,b;
while(cin.hasNext()){
a=cin.nextBigInteger();
b=cin.nextBigInteger();
System.out.println(a.add(b));
}
}
}
java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。
相对实用的几个API
返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
hasNext()
判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
hasNextLine()
如果在此扫描器的输入中存在另一行,则返回 true。
next()
查找并返回来自此扫描器的下一个完整标记。
nextLine()
此扫描器执行当前行,并返回跳过的输入信息。
- java.util.Scanner的日常用法
-
Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的。查看最新在线文档: 1. public final class Scanner 2. extends Object 3. implements Iterator<String>, Closeable 可见,Scanner是没有子类的。 在JDK API关于Scanner提供了比较多的构造方法与方法。那么现在列出一些在平时工作中比较常用的方法,仅供大家参考: 构造方法:
1. public Scanner(File source) throws FileNotFoundException
2. public Scanner(String source)
3. public Scanner(InputStream source) //用指定的输入流来创建一个Scanner对象 方法: 1. public void close() //关闭
2. public Scanner useDelimiter(String pattern) //设置分隔模式 ,String可以用Pattern取代 3. public boolean hasNext() //检测输入中,是否,还有单词
4. public String next() //读取下一个单词,默认把空格作为分隔符
5. public String nextLine() //读行
6. 注释:从hasNext(),next()繁衍了大量的同名不同参方法,这里不一一列出,感兴趣的,可以java.util.Scanner的总结
//构造方法(常用的三个)
//Scanner(File source)
//Scanner(InputStream source)
//Scanner(String source)
//对比两种方式的比较
//Scanner sc=new Scanner(System.in);
//BufferedReader br=new BufferedReader(new InputStreamReader(System.in))
//方法
//useDelimiter(Pattern pattern)改变token的分割方式,默认的是空格,传Pattern对象
//useDelimiter(String pattern)改变token的分割方式,默认的是空格,传String
//hasNext();查看是否有token的分割段
//hasNextInt();查看是否有int类型的token的分割段
//nextInt();返回下一个int的数值
//nextLine();返回一行
//hasNext(Pattern pattern);返回下一个pattern类型的token
public class ScannerTest {
public static void main(String[] args){
String str = "1.1 22.2 s 4 5.3 6 7.5 8 9";
Scanner scanner = new Scanner(str);
//scanner.useDelimiter("\\.");
while(scanner.hasNext()){
if(scanner.hasNext(Pattern.compile("\\d\\.\\d"))){
System.out.println(scanner.next());
}else{
scanner.next();//要调用一下next()相关的方法才会到下一个token
}
}
}
}
结果:
1.1
5.3
7.5
public class ScannerTest {
public static void main(String[] args){
String str = "1.2 s.4 5 6.7 8 9";
Scanner scanner = new Scanner(str);
//token以.分割
scanner.useDelimiter("\\.");
while(scanner.hasNext()){
System.out.println(scanner.next());
}
}
}
结果:12 s4 5 67 8 9