java中获取控制台输入的两种方式

第一种方式:比较传统的方式,得到字符串后要另行判断、转换

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
  
public class MainRun {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
  
          
        try {  
            <span style="color:#ff0000;">BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));</span>  
            System.out.print("请输入一个字符串:");  
            <span style="color:#ff0000;">String str = strin.readLine(); </span> 
              
            System.out.println("第一个:"+str);  
              
            System.out.println("请输入第二个字符串:");  
           <span style="color:#ff0000;"> String str2 = strin.readLine();</span>  
            System.out.println("第2个:"+str2);  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
          
    }  
  
}  

第二种方式:利用Scanner  JDK5以后引入了java.util.Scanner;来处理控制台输并得到相应的数据类型

import java.util.Scanner;  
  
public class MainRun {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        Scanner sc = new Scanner(System.in);   
        System.out.println("输入第一个boolean值(true/false):");  
        if(sc.nextBoolean()){  
            System.out.println("输入布尔:真的");  
        }else{  
            System.out.println("输入布尔:假的");  
        }  
          
          
        System.out.println("输入第一个数字:");  
        System.out.println("输入数字:"+sc.nextInt());  
  
        System.out.println("输入一个字符串:");  
        System.out.println("输入字符串:"+sc.next());  
  
        System.out.println("输入一个长整型:");  
        System.out.println("输入长整型:"+sc.nextLong());  
          
    }  
  
}  

java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入。

一、扫描控制台输入

这个例子是常常会用到的,但是如果没有Scanner,写起来非常不方便。

当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所有输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。

import java.util.Scanner;
/**
 * 扫描控制台输入
 * @author mhy
 *
 */
public class TestScanner {
	public static void main(String[] args) {
      Scanner s = new Scanner(System.in);
      System.out.println("请输入字符串:");
      while(true) {
    	  String lin = s.nextLine();
    	  if(lin.equals("exit")) break;
    	  System.out.println(">>>" + lin);
      }
	}
}

请输入字符串:
asd
>>>asd
sdff
>>>sdff
exit

二、如果说Scanner使用简便,不如说Scanner的构造器支持多种方式,构建Scanner的对象很方便。

可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner,就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。

三、Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符

使用默认的空格分隔符:

        public static void main(String[] args) throws FileNotFoundException { 
                Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf    ......asdfkl    las"); 
//                s.useDelimiter(" |,|\\."); 
                while (s.hasNext()) { 
                        System.out.println(s.next()); 
                } 
        }



123 
asdf 
sd 
45 
789 
sdf 
asdfl,sdf.sdfl,asdf 
......asdfkl 
las 

使用自定义的分隔符

public class TestScanner {
	public static void main(String[] args) {
		Scanner s = new Scanner(
				"123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf    ......asdfkl    las");
		<span style="color:#ff0000;">s.useDelimiter(" |,|\\.");</span>
		while (s.hasNext()) {
			System.out.println(s.next());
		}
	}
}

输出结果如下:

123
asdf
sd
45
789
sdf
asdfl
sdf
sdfl
asdf


















asdfkl






las      

四、常用的API函数


delimiter() 
          返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
hasNext() 
          判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
hasNextLine() 
          如果在此扫描器的输入中存在另一行,则返回 true。
next() 
          查找并返回来自此扫描器的下一个完整标记。
nextLine() 
          此扫描器执行当前行,并返回跳过的输入信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值