Scanner键盘录入

  • 概述
  • 使用步骤
    • 键盘录入int数据
    • 使用Scanner不同方法录入多种数据
    • 统一使用nextLine方法
  • 原因
    • 混用两种Scanner方法
  • 练习
    • 参考代码1
    • 参考代码2
    • 参考代码3

概述

>(green!)

目前在写Java程序的时候,数据都是写死和固定的,有时为了让程序更具有灵活性,就需要灵活的输入数据。

Scanner的作用就是,灵活的从键盘接收数据输入。

但实际开发中的数据,更多是自于前端页面(用户输入,上传等),所以总体而言Scanner对于Web开发并没有太大的实际作用,了解即可。

但是在JavaSE的学习阶段,我们没有前端和各种界面的输入信息,在单机的情况下,使用Scanner键盘录入是很不错的选择,可以提高程序的灵活性。

并且在某些测试的场景中,Scanner键盘录入也有一定的用途,所以Scanner也有必要学习了解一下。

使用步骤

>(green!)

那么Scanner键盘录入到底应该怎么用呢?

大体上可以分为三步走:

  1. 导包 (IDEA有自动导包功能,但是不要认为没有这一步)

    import java.util.Scanner;
    
  2. 创建对象

    Scanner sc = new Scanner(System.in);
    
  3. 接收从键盘录入的数据

    int x = sc.nextInt();
    

注意事项:

  1. 目前阶段,记住步骤会使用就行。以后再来具体分析每步在做什么。

  2. 一般为了方便使用,应该加上提示键盘输入的输出语句。

    参考以下代码案例:

    键盘录入int数据
    Scanner sc = new Scanner(System.in);
    // 键盘接收int数据
    System.out.println("请输入一个int数据:");
    int num = sc.nextInt();
    
  3. 使用Scanner在单独录入数据时,可以选择不同的方法,例如:

    1. 键盘录入String字符串,可以选择使用nextLine方法。
    2. 键盘录入int数值,可以选择使用nextInt方法。
    3. 键盘录入double数值,可以选择使用nextDouble方法。
  4. 使用Scanner在需要录入多种数据类型时,建议不要混用以上方法。比如:

    使用Scanner不同方法录入多种数据
    int num = sc.nextInt();
    String str = sc.nextLine();
    

    这种写法实际上是错误的!

    推荐在有混合录入多种数据的需求时,永远使用nextLine方法,然后将字符串转换成各种需要的数据类型!

    参考以下代码:

    统一使用nextLine方法
    Scanner sc = new Scanner(System.in);
    System.out.println("请键盘录入一个int整数:");
    String numStr = sc.nextLine();
    // 百度查找将String转换成int的方法
    int num = Integer.parseInt(numStr);
    System.out.println("请键盘录入一个字符串:");
    String str = sc.nextLine();
    System.out.println(num);
    System.out.println(str);
    

    当然,如果你对上述用法有疑惑,可以继续往下看学习其中的原因。

    但Scanner本身就是一个了解内容,知不知道原因是无所谓的!

原因

>(green!)

Scanner的使用问题,next()、nextInt()等一系列方法和nextLine()的区别:

  1. next()、nextInt()等一系列方法

    • next()之类的一系列方法遇见第一个有效字符(非空格,非换行符,非制表符)时,开始扫描
    • 当遇见第一个分隔符或结束符(空格、换行符或者制表符)时,结束扫描,获取扫描到的内容
    • 即获得第一个扫描到的不含空格、换行符的单个字符串
  2. nextLine()方法
    • 从方法名上就可以看出来,这个方法是获取一行的内容作为一个字符串被接收
    • 该方法不会因为空格或制表符号而结束扫描
    • 只会因为回车(换行)而结束扫描

>(red!)

由于nextLine()方法碰到换行才结束扫描的特性,所以使用有如下问题:

当使用Scanner接收数值类型后又使用nextLine()方法接收字符串时,例如以下代码:

混用两种Scanner方法
Scanner sc = new Scanner(System.in);
sc.nextInt();
sc.nextLine();

输入数值后回车,会导致程序并不会等待并接收一个字符串,而是直接结束键盘录入。究其原因在于,nextLine()方法碰到回车就结束扫描,所以该方法此时接收的实际上是一个(绝对)空字符串。

解决的办法有很多种:

  1. 可以使用不同的Scanner对象接收,这样肯定不存在冲突问题

  2. 在接收int数据的后面加一个不接收数据的nextLine用来接收回车

  3. 用next()方法接收字符串,但是需要注意该方法以分隔符结束,不再是接收一行了

  4. 可以统一用字符串接收数值类型,接收完毕后再进行类型转换。(具体怎么做,可以自行百度一下)

    例如转换成int类型(传入一个字符串,转换成int接收即可)

    Integer.parseInt()

练习

>(red!)

三道简单的练习题

  1. 键盘录入两个int数据,并对这两个int数据求和,输出其结果。
  2. 键盘录入两个数值,获取这两个数据中的最大值。
  3. 键盘同时录入三个数据,分别为int类型、String类型,double类型,应该怎么做?

>(green!)

参考代码如下:

参考代码1
public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入两个int数值:");int num1 = sc.nextInt();int num2 = sc.nextInt();System.out.println("这两个数值的和是:" + (num1 + num2));
}
参考代码2
public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入两个int数值:");int num1 = sc.nextInt();int num2 = sc.nextInt();System.out.println("这两个数值的最大值是:" + ((num1 > num2) ? num1 : num2));
}
参考代码3
public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 混合录入数据类型时,统一使用nextLine方法System.out.println("请输入一个int整数:");String numStr = sc.nextLine();int num = Integer.parseInt(numStr);System.out.println("请输入一个字符串:");String str = sc.nextLine();System.out.println("请输入一个double数据:");String doubleStr = sc.nextLine();double doubleNum = Double.parseDouble(doubleStr);
}

Scanner键盘录入相关推荐

  1. 使用构造方法 重载 Scanner键盘录入的方式,做一个两个int类型的相加 和三个double类型的计算器

    import java.util.Scanner; public class Calculator { // 使用构造方法 重载 Scanner键盘录入的方式,做一个两个int类型的相加 和三个dou ...

  2. java if赋值语句_Java基础第3天+运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符)、Scanner键盘录入、if语句...

    1:运算符(掌握) (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正号 c:字符串连接符 C:/和%的区别 数据做除法操作的时候,/取得是商,%取得是余数 D:++ ...

  3. java键盘输入运算符_Java基础学习-三元运算符和键盘录入的基本步骤和使用

    1.键盘录入数据概述 我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性. 2.如何实现键盘录入数据呢?(目前先记住就行) 导包 ...

  4. 键盘录入,替换敏感词

    import java.util.Scanner;/*** 键盘录入,替换敏感词*/ public class Demo6 {public static void main(String[] args ...

  5. 键盘录入一个字符串,判断是否是对称字符串

    import java.util.Scanner;/*** 键盘录入一个字符串,判断是否是对称字符串* 对称字符串:123321* 非对称字符串:123123*/ public class Demo8 ...

  6. 键盘录入两个整数,分别赋值给int变量x,y然后比较x和y的大小

    import java.util.Scanner;/** 键盘录入两个整数,分别赋值给int变量x,y然后比较x和y的大小*/ public class Test {public static voi ...

  7. Java基础---键盘录入工具(Scanner类)

    键盘录入工具(Scanner类) 由jdk的类库提供,在类库中的java.util包下,键盘录入步骤是: 1.导包:import 包名.类名 即 import java.util.Scanner; 2 ...

  8. Java键盘录入 Scanner

    Java键盘录入 Scanner 概述: 是一种功能,是jdk中Scanner类中的一种功能,可以通能过键盘录入数字和字符串的功能,这里只涉及录入int数字的功能. 使用步骤: ​ 1.需要把别人写好 ...

  9. Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)

    摘要 Java基础重温_02: 运算符(算术运算.+操作.赋值运算.自增自减.关系运算(比较).逻辑运算.短路逻辑运算.三元运算) 三元运算符案例(2只老虎:2个变量比较.三个和尚:3个变量比较) 键 ...

最新文章

  1. 经常造轮子的 AI 工程师水平通常不会太差
  2. 辛湜推荐的数据库领域的一些学习材料
  3. 如何优雅关闭 Spring Boot 应用
  4. 【2012年华为校园招聘软开上机-成都】字母转换、统计单词个数
  5. 学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)
  6. perl怎么拷贝一个文件到另一个文件夹中或者怎么拷贝文件夹到另一个文件夹
  7. Spread for Windows Forms快速入门(1)---开始使用Spread
  8. dubbo实现原理之SPI简介
  9. mysql执行计划字段解释
  10. 进程和线程相关小知识
  11. Oracle中ROWNUM伪列和ROWID伪列的用法与区别
  12. java list 在头部添加6_【Java提高十六】集合List接口详解
  13. 关于MDI窗体的那些问题
  14. django的命令, 配置,以及django使用mysql的流程
  15. .Net中常用的几种ActionResult
  16. python模拟键盘操作_Python 模拟键盘鼠标操作详细教程
  17. layui 表单 验证整数
  18. 电子之220V有效值峰值峰峰值
  19. python破解excel进入密码(指定密码字符)
  20. 小米note2鸿蒙ROM,小米note2线刷刷机教程_小米note2第三方rom线刷包_救砖刷机包

热门文章

  1. 用于Lucene的各中文分词比较
  2. uber幽灵车_Uber&Careem合并:新兴的出租车服务将在中东和北非地区产生影响?...
  3. yjk只算弹性的不计算弹塑性_ABAQUS弹塑性时程分析注意事项 -
  4. 原电脑的LenovoS41-70的Anaconda配置信息
  5. ready 和 onload 的区别
  6. SEO从业者打造个人品牌的八个建议
  7. Spring Data JPA 实战
  8. 我的世界java额外参数_我的世界超平坦自定义部分参数
  9. 夜光带你走进C# 游戏开发等(九十二)擅长的领域
  10. 混沌工程之ChaosToolkit使用之一删除K8s POD