通过Scanner类获取用户输入时,控制台会一直等待用户的输入,可以输入不同类型的值。本篇博客主要讲解从控制台输入值,即Scanner类的使用方法。


Api文档中关于Scanner类的构造方法


键盘输入:Scanner(InputStream source)

键盘输入数字型:byte,short,int,long,float,double

/*输入数字型:byte,short,int,long,float,double*/
public class scannerDemo {
public static void main(String args[]) {
//声明Scanner,方式为键盘输入
Scanner sc = new Scanner(System.in); //输入一个int型
System.out.print("输入一个int型数字:");
int inum = sc.nextInt();
System.out.println("你输入了一个int型数学:" + inum); //判断输入的是否为int型
System.out.print("输入一个int型数字:");
if(sc.hasNextInt()) {
int inum2 = sc.nextInt();
System.out.println("输入的是int型值:" + inum2);
}else {
System.out.println("输入的类型不是int型");
} //从键盘输入byte型值
System.out.println("输入一个byte型值");
byte b = sc.nextByte();
System.out.println("输入的byte值为:" + b); //从键盘输入short型值
System.out.println("输入一个short型值");
short s = sc.nextShort();
System.out.println("输入的short值为:" + s); //从键盘输入long型值
System.out.println("输入一个long型值");
long l = sc.nextLong();
System.out.println("输入的long值为:" + l); //从键盘输入float型值
System.out.println("输入一个float型值");
float f = sc.nextFloat();
System.out.println("输入的float值为:" + f); //从键盘输入double型值
System.out.println("输入一个double型值");
double d = sc.nextDouble();
System.out.println("输入的double值为:" + d);
}
}

展示效果:

键盘输入字符串型:String

/*输入String型*/
public class InputStringDemo {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in); //nextLine形式输入String值
System.out.println("输入一个字符串");
System.out.println(sc.hasNextLine()); //判断是否有下一行
String str = sc.nextLine();
System.out.println("输入的String值为:" + str); //next形式输入String值
System.out.println("再输入一个字符串");
System.out.println(sc.hasNext()); //判断是否有非空字符
String string = sc.next();
System.out.println("输入的String值为:" + string);
}
}

展示效果:


۵ has xxxx是检查输入是否符合该形式,返回值是boolean型;next xxx是以该形式读取输入的值

۵ 采用has xxxx的话,后面也要用next xxxx。比如前面用hasNextLine,那么后面要用 nextLine 来处理输入

hasNext与hasNextLine的区别:

۵ hasNext是检查是否有非空字符

۵ hasNextLine用于检查控制台输入或者读取文本文件时的输入扫描器(java.util.Scanner类)扫描,当扫描到存在下一行时,hasNextLine返回true,没有下一行输入或者文本文件没有下一行时,返回false

next与nextLine的区别:

۵ next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或等视为分隔符或结束符,简单来说next方法不能得到带空格的字符串

۵ nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

键盘输入字符型:char

public class charDemo {
public static void main(String args[]) {
//输入char字符:实际上就是String字符串取第一个字符
System.out.println("输入一个字符:");
char c1 = sc.next().charAt(0);
System.out.println(c1);
System.out.println("输入一个字符:");
char c2 = sc.next().toCharArray()[0];
System.out.println(c2);
System.out.println("输入一个字符:");
char c3 = sc.next().charAt(1);
System.out.println(c3);
}
}

展示效果:

۵ Java中没有单独定义输入char型变量的方法,char型变量的输入是通过String类的charAt(index)或toCharArray()[index]方法来实现,建议使用charAt(0)


Scanner方法摘要





本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布

Java基本语法--控制台输入(Scanner类)的更多相关文章

  1. java 监听控制台输入

    分享一下我写的java监听控制台输入并可以给出响应的功能. 很多时候需要监听控制台的输入内容,相当于信号监听,根据输入的内容做出相应的动作,这里给出我的一个简单实现. 要注意的是:监听得到的消息中前后 ...

  2. Java面向对象 第2节 Scanner 类和格式化输出printf

    §Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 1.创建 Scanner 对象的基本语法:Scanner s = ...

  3. Java入门 - 语言基础 - 21.Scanner类

    原文地址:http://www.work100.net/training/java-scanner.html 更多教程:光束云 - 免费课程 Scanner类 序号 文内章节 视频 1 概述 2 使用 ...

  4. Java基础语法—数据输入

    我们可以通过 Scanner 类来获取用户的输入.使用步骤如下: 1.导包.Scanner 类在java.util包下,所以需要将该类导入.导包的语句需要定义在类的上面. import java.ut ...

  5. Java中从控制台输入的三种方式

    我们最熟悉的从控制台读取一个字符或者一个字符串都知道用Scanner,那么除了Scanner还有没有其他的呢,答案是有的,我们来看看. System.in.read() System.in.read( ...

  6. Java基础语法<七> 对象与类

    笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个类的对象 ...

  7. Java基础语法<七> 对象与类 封装

    笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 1.1 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个 ...

  8. java——获取从控制台输入的数据的方法

    一.使用标准输入串System.in System.in.read();     //一次只读入一个字节数据,但是我们往往希望获得的是一个字符串或者一组数字 二.使用Scanner获得一个字符串或一组 ...

  9. Java(114-132)【Scanner类、Random类、ArrayList类】

    1.API概述和使用步骤 应用程序编程接口.Java的API是一本程序员的字典,学会查询 2.Scanner 概述及其API文档 键盘输入 类都是大写的Scanner,关键字是小写的public 3. ...

随机推荐

  1. SpringBoot整合NoSql--(四)Session共享

    简介: 正常情况下,HttpSession是通过Servlet 容器创建并进行管理的,创建成功之后都是保存在内存中.如果开发者需要对项目进行横向扩展搭建集群,那么可以利用一些硬件或者软件工具来做负载均 ...

  2. opencv —— getRotationMatrix2D、warpAffine 仿射变换实现图像旋转缩放

    仿射变换的基本概念 仿射变换是一种二维坐标(x, y)到二维坐标(u, v)的线性变换,其数学表达式形式如下: 对应的齐次坐标矩阵表示形式为: 仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然 ...

  3. c#画图之折线图

    public JsonResult DrawLineChart() { // 预置颜色 List<Color> colors = new List<Color>() { Col ...

  4. C语言 运算符

    C语言 运算符 运算符优先级别 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员 ...

  5. 刷题79. Word Search

    一.题目说明 题目79. Word Search,给定一个由字符组成的矩阵,从矩阵中查找一个字符串是否存在.可以连续横.纵找.不能重复使用,难度是Medium. 二.我的解答 惭愧,我写了很久总是有问 ...

  6. hash类型的应用场景 —— Redis实战经验

    hash类型是一个string类型的field和value的映射表,每个 hash 可以存储 232 - 1 键值对(40多亿),hash类型主要有以下应用场景. 1. 购物车 以用户id为key,商 ...

  7. Julia 入门学习教程

    有一门语言,它看起来像 Python ,感觉起来像 Lisp ,运行起来又像 C 一样快速,他就是Julia. 近年来,Julia 语言已然成为编程界的新宠,尤其在科学计算和人工智能领域炙手可热. 据 ...

  8. qt creator源码全方面分析(2-4)

    目录 Qt Creator API Reference 库 核心库 其他库 插件 Qt Creator API Reference Qt Creator的核心基本上只是一个插件加载器.所有功能都在插件 ...

  9. [开发技巧]·AttributeError: module 'pywt' has no attribute 'wavedec'解决方法

    [开发技巧]·AttributeError: module 'pywt' has no attribute 'wavedec'解决方法 1.卸载 pywt pip uninstall pywt 2.安 ...

  10. 题解【洛谷P2730】魔板 Magic Squares

    题面 首先我们可以发现,在每一次 BFS 时按照 \(A→B→C\) 的顺序枚举遍历肯定是字典序最小的. 然后就是普通的 BFS 了. 我们考虑使用 \(\text{STL map}\) 来存储起点状 ...