Logo

郎哥编程

Java的Scanner类

2018-01-10 919

当程序需要从键盘获取用户输入的命令或数据时,例如:获取用户输入的计算表达式。可以通过Scanner类方便地获取用户输入。

通过Scanner类获取用户输入时,控制台会一直等待用户的输入,直到用户敲回车键结束,把所输入的内容传给Scanner,程序要从Scanner获取输入的内容,则只需要调用Scanner的nextLine()方法即可。

Scanner类的初始化

声明一个scanner变量,并用new运算符实例化Scanner,实例化Scanner时,需要传入System.in对象,Scanner通过传入的System.in获取用户输入,并对用户输入的字符进行处理,屏蔽了获取用户输入的复杂操作。

Scanner  scanner = new  Scanner(System.in);

示例1:Scanner类的初始化

在D盘Java目录下,新建“ScannerInitSample.java”文件。用记事本打开“ScannerInitSample.java”文件,输入以下代码:

import java.util.*;
public  class  ScannerInitSample {
  public static void main(String args[])
  {
     //声明Scanner变量,并用new运算符实例化Scanner
     Scanner sc = new Scanner(System.in);
     //提示用户输入字符串
     System.out.println("请输入字符串");    
    //调用Scanner方法next()获取用户输入
     String tempValue = sc.next();
     //输出用户输入的字符串
     System.out.printf("您输入的字符串是:%s",tempValue);    
  }
}

代码结构分析

程序功能主要是演示Scanner如何声明及初始化。

语句“import java.util.*;”,用于导入包含Scanner的类库,Scanner包含在Java 核心类库util中,要使用Scanner类,必须导入java.util库,类库导入关键字为import。

编译“ScannerInitSample.java”文件,在命令行窗口输入“javac  ScannerInitSample.java”并执行命令,编译通过后,在命令行窗口输入“java  ScannerInitSample”运行Java程序,命令行窗口显示如下信息:

                 a034.png                            

图 5-12  Scanner初始化执行结果

Scanner类的方法

Scanner类提供了多个方法,用于完成字符串的输入。下面列举了几个主要的操作方法,其它方法请参考Java  API:

(1)方法名称:next()

方法说明:返回由输入设备输入的有效字符,返回类型为字符串。该方法一定要读取到有效字符后才能返回。

方法示例:

     Scanner sc = new Scanner(System.in);

String   szWelcome = sc.next();

(2)方法名称:nextLine()

方法说明:返回由输入设备输入的字符串,返回类型为字符串。该方法以用户按下回车键(Enter)结束当前输入。

方法示例:

     Scanner sc = new Scanner(System.in);

String   szWelcome = sc. nextLine() ;

示例2:Scanner类的输入操作

在D盘Java目录下,新建“ScannerInputSample.java”文件。用记事本打开“ScannerInputSample.java”文件,输入以下代码:

import java.util.*;
public  class  ScannerInputSample {
  public static void main(String args[])
  {
     //声明Scanner变量,并用new运算符实例化Scanner
     Scanner sc = new Scanner(System.in);
     //提示用户输入字符串
     System.out.println("请输入字符串");    
     //调用Scanner方法nextLine()获取用户输入
     String  tempValue = sc.nextLine();
     //输出用户输入的字符串
     System.out.printf("您输入的字符串是(nextLine):%s\n",tempValue);    
 
     //提示用户输入字符串
     System.out.println("请输入字符串");    
     //调用Scanner方法next()获取用户输入
     tempValue = sc.next();
     //输出用户输入的字符串
     System.out.printf("您输入的字符串是(next):%s\n",tempValue);    
  }
}

代码结构分析

程序功能主要是演示Scanner的next和nextLine输入方法的区别。

语句“String  tempValue = sc.nextLine();”,通过nextLine方法获取用户输入,用户按下回车键(Enter),nextLine返回按下回车键前所有输入的字符。

语句“tempValue = sc.next();”,通过next方法获取用户输入,用户按下回车键(Enter),next返回过滤空格后的字符串。

编译“ScannerInputSample.java”文件,在命令行窗口输入“javac  ScannerInputSample.java”并执行命令,编译通过后,在命令行窗口输入“java  ScannerInputSample”运行Java程序,命令行窗口显示如下信息:

a036.png


图 5-13 Scanner类的输入操作执行结果

从上述结果可以看出,nextLine返回按下回车键前输入的所有字符,包括空格;next则返回过滤掉空格后的字符串。


知识点拨.png


Scanner仅是简化了文本的输入,Scanner通过传入的InputStream从键盘获取用户输入的字符串,然后对字符进行相应处理并返回。

 


作业.png


编写一个程序,应用Scanner的next和nextLine方法获取用户输入的字符串,辨别两种输入方法的不同之处。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论