zoukankan      html  css  js  c++  java
  • 使用Scanner获取键盘输入 (转)

    原文地址:https://www.cnblogs.com/SzBlog/p/5404335.html

    后面有改动

    使用Scanner类可以很方便地便获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流 、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可接受文件、输入流、字符串作为数据,用于从文件、输入流、字符串中解析数据。

            Scanner主要提供了两个方法来扫描输入:

    (1)   hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果需要判断是否包含下一个字符串,可以省略Xxx.

    (2)   nextXxx():获取下一个输入项。Xxx的含义与前一个方法中Xxx相同。

            在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。看下面的程序使用Scanner来获得用户的键盘输入。

    public class TestScannerKeyBoard
    {
     public static void main(String[] args)
     {
      //System.in代表标准输入,就是键盘输入
      Scanner sc=new Scanner(System.in);
      //Scanner使用useDelimiter(String pattern)方法设置分隔符。下面设置使用回车作为分隔符,
      //程序每次读取一行,不管这一行是否包含空格,Scanner都把它当成一个输入项
      //sc.useDelimiter("
    ");
    
      //判断是否还有下一个输入项
      while(sc.hasNext())
      {       
       //输出输入项
       System.out.println("键盘输入内容是:"+sc.next());
      }
     }
    }
    运行上面程序,程序通过Scanner不断从键盘读取键盘输入,每次读到键盘输入,直接将输入内容打印在控制台。
    事实上,Scanner提供了两个简单的方法来逐行读取:
       (1) boolean hasNextLine():返回输入源中是否还有下一行。
       (2)String nextLine():返回输入源中的下一行的字符串。
        Scanner不仅可以获取字符串输入项,也可以获取任何类型的输入项。

    在实现字符窗口的输入时,很多人更喜欢选择使用扫描器Scanner,它操作起来比较简单。在编程的过程中,我发现用Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine(),但是这两种方法究竟有什么区别呢?我查了一些资料总结了一下,希望对大家有所帮助~
            

          next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

            简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。

            而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

    鉴于以上两种方法的只要区别,一定要注意next()方法和nextLine()方法的连用,举个例子:

    <span style="font-family:FangSong_GB2312;">im</span>port java.util.Scanner;
    
    public class NextTest{
    	public static void main(String[] args) {
    
    		String s1,s2;
    
    		Scanner sc=new Scanner(System.in);
    
    		System.out.print("请输入第一个字符串:");
    
    		s1=sc.nextLine();
    
    		System.out.print("请输入第二个字符串:");
    
    		s2=sc.next();
    
    		System.out.println("输入的字符串是:"+s1+" "+s2);
    
    	}
    }
    

      运行结果:
    请输入第一个字符串:home
    请输入第二个字符串:work

    输入的字符串是:home wor

  • 相关阅读:
    stm32f103 SPI单线TX发数据来驱动LCD
    【转】常见排序算法
    [转]命令行 Subversion 入门
    JLINK V8 Keil MDK4.10 STM32
    字符串表示的大整数相加
    字符串反转
    字符串表示的大整数相乘
    猴子选大王
    [转]Posix-- 互斥锁 条件变量 信号量
    [转]Openwrt的Inittab
  • 原文地址:https://www.cnblogs.com/qzj-it/p/9641319.html
Copyright © 2011-2022 走看看