Java基础--手把手教你如何从键盘录入信息

简介: Java基础--手把手教你如何从键盘录入信息

从键盘录入信息

一、前奏

1、创建扫描仪对象

Scanner有扫描仪的意思,sc是自己取的名字(有的人喜欢用input),new Scanner是创建一个Scanner对象,System.in代表电脑的键盘。

        /*创建扫描仪对象*/
        Scanner sc=new Scanner(System.in);

即,扫描电脑的键盘。

2、导入包

将第一步写完,我们在编译器里面看到,Scanner标红了,报错了!

image-20220212112914891

:question: 为啥报错呢?

我们要使用Scanner,需要先找到它的路径!

我们需要导入一个包。

注意是在最上方导入包。

image-20220212113547959

/* 导入Scanner 导包 */
import java.util.Scanner;

import是导入的意思。

后面一串是文件存在的路径,这里指的是Scanner存在的路径。

:question: 那这个路径在哪儿呢?

我们可以在左侧找到。

"External Libraries"-->"<1.8(2)>"-->"rt.jar"-->"java"-->"util"-->"Scanner"。

具体演示:

(1)点击打开“External Libraries”。

image-20220212113638006

(2)点击打开“<1.8(2)>”。

image-20220212113726563

(3)找到“rt.jar”。

image-20220212113804335

(4)点开“java”。

image-20220212113848535

(5)找到“util”。

image-20220212113919590

(6)往下找,可以看到“Scanner”。

image-20220212114012765

:question:那我不知路径咋办?我不知道Scanner在这儿啊?
(1)第一种方法

别急,我们先回到第一步,写完报错的时候。

将鼠标挪到红色Scanner上,会出现一个提示。

点击Import class

image-20220212114356958

然后选择第一个Scanner(java.util)

image-20220212114518720

就会自动导入路径啦。

image-20220212114556655
(2)第二种方法
还有一种方法,将光标放在Scanner上,然后直接按快捷键Alt+Enter
在这里插入图片描述
然后再按回车(Enter)。
在这里插入图片描述
然后再按回车即可自动引入啦。
在这里插入图片描述

二、从键盘录入信息

1、输入整数

先从键盘接收一个整数--->sc.nextInt()

然后创建一个整型变量b,将从键盘接收的整数保留起来--->int b

具体写法如下:

 /*从键盘接收一个整数*/
 int b=sc.nextInt();

然后我们输出变量b。

System.out.println("您输入的是:"+b);  //前面输入的是字符串,后面是一个变量,中间的"加号+"是在做文字的拼接

接下来我们来运行这个代码。

右键run之后,我们会发现,控制台什么也没有输出,但是小红灯还是亮着的。

image-20220212115457094

亮着说明这个程序还在跑。

为啥没有东西输出?

当然没有输出啦,现在正在执行这一行,等待我们输入数据呢。

image-20220212115629152

那我们现在输入一个整数。

image-20220212115738384

然后按下回车,执行下一行代码,输出相应的内容。

image-20220212115808860

可以看到,红灯没有了,程序也结束啦。

现在写的这个代码,还是很影响观感的,没有提示语句,控制台空空白白的,咱也不知道什么时候输入啊。

我们可以在输入之前,加上一行代码,用于提示用户,该从键盘输入内容啦!

这样写就可以了:

        /*提示用户*/
        System.out.println("请录入一个整数");

注意是写在这个位置哦,要在从键盘输入之前提示才妥当!

image-20220212120158566

这样的话,输出的时候,就比较直观了。

我们运行代码:

image-20220212120309766

这个提示语句,是不是很直观呢?

现在咱们输入10,然后回车。

image-20220212120353554

2、输入浮点数

先从键盘接收一个浮点数--->sc.nextDouble()

然后创建一个变量c,将从键盘接收的浮点数保留起来--->double c

具体写法如下:

double c=sc.nextDouble();

然后和上面输入整数一样,咱们需要在键盘输入之前提醒一下用户,输入一个小数。

System.out.println("请录入一个小数");

最后输出即可。

System.out.println("您输入的是:"+c);

整体就是这样的:

image-20220212120942328

然后运行。

image-20220212121037969

我们从键盘敲一个小数,然后回车,可以看到最终结果。

image-20220212121125079

3、输入字符串

先从键盘接收字符串--->sc.next()

然后创建一个字符串变量s,将从键盘接收的字符串保留起来--->String s

具体写法如下:

String s=sc.next(); //next后面什么都不放的意思就是,输入的是纯文字。

然后和上面输入整数一样,咱们需要在键盘输入之前提醒一下用户,输入字符串。

System.out.println("请输入其他内容");

最后输出即可。

System.out.println("您输入的是:"+s);

整体就是这样的:

image-20220212121625550

然后运行。

image-20220212121709094

我们从键盘敲一行字符串,然后回车,可以看到最终结果。

image-20220212121800722

三、释放资源

当结束之后,我们需要释放一下资源。

在结尾写上这一行代码:

        /*释放资源*/
        sc.close();

即关闭扫描仪。

注:不写这行代码,程序也是可以运行的。但是,关了更好啊,用完了就应该把还回去是吧。

四、补充说明

1、输入与接收的数据类型不匹配

(1)我们第一个要求输入的是一个整数,但是如果输入了一个小数,会怎么样呢?

image-20220212122508859

输入,按回车之后,会发现报错。

image-20220212122554314

出现了一个InputMismatchException的错误。

Input是“输入”的意思, Mismatch是“不匹配”的意思, Exception是“异常”的意思。

就是输入的数据,和要求输入的数据类型不匹配

我们在控制台,可以看到报错的具体位置(问题在哪儿产生的)。

这里也顺便教大家如何查看报错的位置啦,学到就是赚到呀~

image-20220212122903249

具体含义:在scannerDemo这个包,Test2里面,主方法main里的第15行。

总体来说,不是代码写错了,是输入的数据和接收的数据类型不匹配!

(2)我们第二个要求输入的是一个小数,但是如果输入了一个整数,会怎么样呢?

image-20220212123259184

输入,按回车之后,会发现并没有报错。

image-20220212123329221

但是输出值还是有小数点位的。

你输入整数之后,它会带一个.0处理,然后当成一个浮点数存起来。

我们知道,整数的数据是可以给浮点数数据类型的变量赋值的。

2、输入带有空格的字符串

我们输入字符串如果带有空格,会输出什么样的结果呢?

image-20220212123756398

输入完成,按回车,会发现能录入的仅仅只有空格前面的内容

image-20220212123833531

这也算,next接收文字的一个弊端吧。

:question:那么如何让空格之后的内容也被接收呢?

我们将next()改为nextLine()。【LIne有行的意思,就是一整行的意思】

String s=sc.nextLine();   //sc.next();

我们再次尝试。

image-20220212124247137

好家伙!程序直接结束了?!

我还没有录入呢,就直接结束了?!

为哈会这样呢?

nextLine有个毛病,它会受到上面输出的影响,好像录入进来了,但其实啥也没有录进来。

如果想要用 nextLine的话,前面就不要输出任何信息!!!不要有任何输出语句。

nextLine一般不推荐使用,一般使用next,只不过会有空格的问题而已。

:question: 如果就想用nextLine那咋办?

那我们就要在任何一个输出语句之前,先用nextLine就好啦。

如图(注意在红框框住的那一行之前不要有任何的输出语句):

image-20220212125039303

我们再次执行。

image-20220212125225514

此时正在等待我们录入。

我们输入带有空格的字符串,然后回车。

image-20220212125319793

我们可以看到,完整的输出啦!

nextLine就是,有空格没有关系,直接把一整行都录入进来啦。

但如果前面有输出语句,会严重影响它的功能!!!所以不怎么用它。

五、全部代码

在此将全部代码放在这儿,供大家学习使用。

package scannerDemo;

/* 导入Scanner 导包 */
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        /*创建扫描仪对象*/
        Scanner sc = new Scanner(System.in);

        String s1 = sc.nextLine();
        System.out.println(s1);

        /*从键盘录入信息*/

        /*提示用户*/
        System.out.println("请录入一个整数");
        /*从键盘接收一个整数*/
        int b=sc.nextInt();
        System.out.println("您输入的是:"+b); //前面输入的是字符串,后面是一个变量,中间的"加号+"是在做文字的拼接

        /*从键盘接收一个浮点数*/
        System.out.println("请录入一个小数");
        double c=sc.nextDouble();
        System.out.println("您输入的是:"+c);

        /*从键盘接收文字*/
        System.out.println("请输入其他内容");
        String s=sc.nextLine();   //sc.next(); //next后面什么都不放的意思就是,输入的是纯文字。
        System.out.println("您输入的是:"+s);

        /*释放资源*/
        sc.close();
    }
}
相关文章
|
1月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
31 1
|
1月前
|
监控 Java
Java如何获取堆栈信息
【2月更文挑战第19天】
|
3月前
|
Java API 数据库
基于Java的大中型企业人力资源管理信息系统设计与开发
基于Java的大中型企业人力资源管理信息系统设计与开发
33 0
基于Java的大中型企业人力资源管理信息系统设计与开发
|
3月前
|
Java 流计算
这个错误信息来自于Java的ScheduledThreadPoolExecutor类
这个错误信息来自于Java的ScheduledThreadPoolExecutor类
36 7
|
18天前
|
Java
java_键盘录入、随机数
本文介绍了Java中键盘录入和Random类的使用。键盘录入用于从用户那里获取数据,通过导入`java.util.Scanner`,创建`Scanner`对象,调用`nextInt()`或`nextDouble()`读取整数和小数,`next()`读取字符串。Random类用于生成随机整数,导入该类后创建对象,调用`nextInt(int bound)`生成[0, bound-1]范围内的随机数。在JDK17及以上版本,可以使用`nextInt(int start, int end)`生成[start, end)范围的随机数。常见应用包括猜数字游戏和随机点名。
13 0
|
2月前
|
Java 流计算
这个错误信息来自于Java的ScheduledThreadPoolExecutor类,具体的原因是RejectedExecutionException,也就是任务被拒绝执行
【2月更文挑战第3天】这个错误信息来自于Java的ScheduledThreadPoolExecutor类,具体的原因是RejectedExecutionException,也就是任务被拒绝执行
34 2
|
19天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2
|
1月前
|
存储 机器学习/深度学习 搜索推荐
用Java代码打造信息推荐系统
用Java代码打造信息推荐系统
27 2
|
1月前
|
传感器 人工智能 监控
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
31 0
|
1月前
|
Java 知识图谱
【Java每日一题】— —第九题:编写Java程序:通过使用if-else多分支语句,实现从键盘录入一个人的身高和体重后,输出该人的BMI健康体重指数
【Java每日一题】— —第九题:编写Java程序:通过使用if-else多分支语句,实现从键盘录入一个人的身高和体重后,输出该人的BMI健康体重指数
50 0