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

  • 相关阅读:
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    JAVA-蓝桥杯-算法训练-字符串变换
    Ceph:一个开源的 Linux PB 级分布式文件系统
    shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
  • 原文地址:https://www.cnblogs.com/qzj-it/p/9641319.html
Copyright © 2011-2022 走看看