从键盘录入信息


文章目录

  • 一、前奏
  • 1、创建扫描仪对象
  • 2、导入包
  • 二、从键盘录入信息
  • 1、输入整数
  • 2、输入浮点数
  • 3、输入字符串
  • 三、释放资源
  • 四、补充说明
  • 1、输入与接收的数据类型不匹配
  • 2、输入带有空格的字符串
  • 五、全部代码


一、前奏

1、创建扫描仪对象

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

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

即,扫描电脑的键盘。

2、导入包

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

Java录入学生信息代码 java 录入信息 编程_Java录入学生信息代码

❓ 为啥报错呢?

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

我们需要导入一个包。

注意是在最上方导入包。

Java录入学生信息代码 java 录入信息 编程_System_02

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

import是导入的意思。

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

❓ 那这个路径在哪儿呢?

我们可以在左侧找到。

“External Libraries”–>“<1.8(2)>”–>“rt.jar”–>“java”–>“util”–>“Scanner”。

具体演示:

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

Java录入学生信息代码 java 录入信息 编程_开发语言_03

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

Java录入学生信息代码 java 录入信息 编程_System_04

(3)找到“rt.jar”。

Java录入学生信息代码 java 录入信息 编程_Java录入学生信息代码_05

(4)点开“java”。

Java录入学生信息代码 java 录入信息 编程_java_06

(5)找到“util”。

Java录入学生信息代码 java 录入信息 编程_java_07

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

Java录入学生信息代码 java 录入信息 编程_开发语言_08

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

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

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

点击Import class

Java录入学生信息代码 java 录入信息 编程_从键盘录入信息_09

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

Java录入学生信息代码 java 录入信息 编程_Java录入学生信息代码_10

就会自动导入路径啦。

Java录入学生信息代码 java 录入信息 编程_System_11


(2)第二种方法

还有一种方法,将光标放在Scanner上,然后直接按快捷键Alt+Enter

Java录入学生信息代码 java 录入信息 编程_java_12


然后再按回车(Enter)。

Java录入学生信息代码 java 录入信息 编程_System_13


然后再按回车即可自动引入啦。

Java录入学生信息代码 java 录入信息 编程_System_14

二、从键盘录入信息

1、输入整数

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

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

具体写法如下:

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

然后我们输出变量b。

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

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

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

Java录入学生信息代码 java 录入信息 编程_开发语言_15

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

为啥没有东西输出?

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

Java录入学生信息代码 java 录入信息 编程_java_16

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

Java录入学生信息代码 java 录入信息 编程_开发语言_17

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

Java录入学生信息代码 java 录入信息 编程_开发语言_18

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

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

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

这样写就可以了:

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

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

Java录入学生信息代码 java 录入信息 编程_从键盘录入信息_19

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

我们运行代码:

Java录入学生信息代码 java 录入信息 编程_java_20

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

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

Java录入学生信息代码 java 录入信息 编程_开发语言_21

2、输入浮点数

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

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

具体写法如下:

double c=sc.nextDouble();

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

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

最后输出即可。

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

整体就是这样的:

Java录入学生信息代码 java 录入信息 编程_java_22

然后运行。

Java录入学生信息代码 java 录入信息 编程_java_23

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

Java录入学生信息代码 java 录入信息 编程_Java录入学生信息代码_24

3、输入字符串

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

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

具体写法如下:

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

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

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

最后输出即可。

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

整体就是这样的:

Java录入学生信息代码 java 录入信息 编程_从键盘录入信息_25

然后运行。

Java录入学生信息代码 java 录入信息 编程_从键盘录入信息_26

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

Java录入学生信息代码 java 录入信息 编程_java_27

三、释放资源

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

在结尾写上这一行代码:

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

即关闭扫描仪。

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

四、补充说明

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

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

Java录入学生信息代码 java 录入信息 编程_java_28

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

Java录入学生信息代码 java 录入信息 编程_Java录入学生信息代码_29

出现了一个InputMismatchException的错误。

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

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

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

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

Java录入学生信息代码 java 录入信息 编程_java_30

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

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

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

Java录入学生信息代码 java 录入信息 编程_System_31

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

Java录入学生信息代码 java 录入信息 编程_System_32

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

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

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

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

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

Java录入学生信息代码 java 录入信息 编程_从键盘录入信息_33

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

Java录入学生信息代码 java 录入信息 编程_java_34

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

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

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

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

我们再次尝试。

Java录入学生信息代码 java 录入信息 编程_开发语言_35

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

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

为哈会这样呢?

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

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

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

❓ 如果就想用nextLine那咋办?

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

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

Java录入学生信息代码 java 录入信息 编程_Java录入学生信息代码_36

我们再次执行。

Java录入学生信息代码 java 录入信息 编程_java_37

此时正在等待我们录入。

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

Java录入学生信息代码 java 录入信息 编程_开发语言_38

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

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();
    }
}