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

 

delimiter() 
          返回此 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());    
                }                         
        }    
}
结果:

1
2 s
4 5 6
7 8 9