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

Posted 新梦起航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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() 
          此扫描器执行当前行,并返回跳过的输入信息。

以上是关于java中获取控制台输入的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

Spring 依赖注入的两种实现方式

java 获取键盘输入常用的两种方法

在JAVA中有两种多态指的是啥

WebSocket实践——Java实现WebSocket的两种方式

java动态获取WebService的两种方式(复杂参数类型)

传统线程技术中创建线程的两种方式