文档章节

Java中获取键盘输入值的三种方法

清风伴月
 清风伴月
发布于 2016/08/17 12:56
字数 988
阅读 3
收藏 0

以下将列出几种方法:

方法一:从控制台接收一个字符,然后将其打印出来

import java.io.*;

public static void main(String [] args) throws IOException{ 

         System.out.print("Enter a Char:"); 

         char i = (char) System.in.read(); 

         System.out.println("your char is :"+i); 

虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。

 

方法二:从控制台接收一个字符串,然后将其打印出来。 在这个题目中,我们需要用到BufferedReader类和InputStreamReader类

import java.io.*;

public static void main(String [] args) throws IOException{ 

           BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

           String str = null; 

           System.out.println("Enter your value:"); 

           str = br.readLine(); 

           System.out.println("your value is :"+str); 

}

这样我们就能获取我们输入的字符串。

 

方法三:这种方法我认为是最简单,最强大的,就是用Scanner类

import java.util.Scanner;

public static void main(String [] args) { 

         Scanner sc = new Scanner(System.in); 

         System.out.println("请输入你的姓名:"); 

         String name = sc.nextLine(); 

         System.out.println("请输入你的年龄:"); 

         int age = sc.nextInt(); 

         System.out.println("请输入你的工资:"); 

         float salary = sc.nextFloat(); 

         System.out.println("你的信息如下:"); 

         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 

}

这段代码已经表明,Scanner类不管是对于字符串还是整型数据或者float类型的变量,只需做一点小小的改变,就能够实现功能!无疑他是最强大的!

 

但是,在使用第三种输入方法的时候有一个需要注意的地方,就是nextLine()函数,在io包中有一个和他功能一样的函数我next()函数,他们的功能一样,但是在实现上有什么差别呢,请看下面代码:

public static void main(String [] args) { 

         Scanner sc = new Scanner(System.in); 

         System.out.println("请输入你的年龄:"); 

         int age = sc.nextInt(); 

         System.out.println("请输入你的姓名:"); 

         String name = sc.nextLine(); 

         System.out.println("请输入你的工资:"); 

         float salary = sc.nextFloat(); 

         System.out.println("你的信息如下:"); 

         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 

}

这段代码和上边第三种实现输入方法给出的例子代 码区别在于,这段代码先执行nextInit()再执行nextLine(),而第三种方法的例子是先执行nextLine(),再执行 nextInit(),当你在运行着两段代码的时候你会发现第三种方法的例子可以实现正常的输入,而这段代码却在输入年龄,敲击enter键后,跳过了输 入姓名,直接到了输入工资这里,(可以自己运行代码看看)这是为什么呢?其实,在执行nextInit()函数之后,敲击了enter回车键,回车符会被 nextLine()函数吸收,实际上是执行了nextLine()函数吸收了输入的回车符(并不是没有执行nextLine函数),前面讲到和 nextLine()功能一样的函数next(),他们的区别就在于:next()函数不会接收回车符和tab,或者空格键等,所以在使用 nextLine()函数的时候,要注意敲击的回车符有个被其吸收,导致程序出现BUG!!!

 

最后小小的总结一下next()和nextLine()的区别:

在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。nextLine()可以接收空格或者tab键,其输入应该以enter键结束。

© 著作权归作者所有

共有 人打赏支持
清风伴月
粉丝 1
博文 129
码字总数 255659
作品 0
海淀
程序员

暂无文章

VS code编辑器安装 php7.2 NTS 版本 Xdebug

本文使用的是 phpstudy 一键安装包(windows32位) php 版本是 php7.2 NTS 1、在 phpstudy 面板中开启 phpdebug 扩展 // 其他选项菜单-> php 扩展与设置-> php 扩展 2、官方下载 Xdebug // ...

削个椰子皮_给个梨
16分钟前
1
0
Swagger中配置了@ApiModelProperty的allowableValues属性但不显示的问题

现在用Swagger来生成API文档的例子已经非常多了,今天碰到开发同事问了一个问题,帮着看了一下,主要还是配置方法的问题,所以记录一下。如果您也碰到了同样的问题,希望本文对您有用。 问题...

程序猿DD
47分钟前
1
0
sql 命令

show variables like '%general%'; show variables like '%log_output%'; show variables like '%quer%'; show global status like '%slow%';...

JavaSon712
54分钟前
2
0
Django修改默认数据库引擎

Django默认数据库引擎为sqlite3,除了sqlite3,还支持postgresql、mysql、oracle 配置如下:其中postgresql_psycopg2为postgresql的适配器。 'django.db.backends.postgresql' 'django.db.bac......

MichaelShu
今天
0
0
动画源码解析

目录介绍 1.Animation和Animator区别 2.Animation运行原理和源码分析 2.1 基本属性介绍 2.2 如何计算动画数据 2.3 什么是动画更新函数 2.4 动画数据如何存储 2.5 Animation的调用 3.Animator...

潇湘剑雨
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部