交互程序 Scanner类
交互程序
1. Scanner类是标准Java类库的类
(1)提供一些方法用于交互式读入不同类型的输入数据,输入可以是不同的数据源,包括用户键入的数据和保存在文件中的数据(怎么弄)。
(2)将一个字符串解析为若干字串。(不知道该怎么用)
2. (1)构造方法,创建新的Scanner对象,从指定的数据源中获取数据
Scanner(InputStream source)
Scanner(File source)
Scanner(String source)
(2)String nextLine() //以字符串类型返回当前行剩余的所有输入数据项
String next() //以字符串类型返回下一个输入数据项
例1:
package seven;
import java.util.Scanner;
public class Echo {
public static void main(String arge[]){
String message1, message2 ;
Scanner scan = new Scanner(System.in);
//创建Scanner类的对象,以便于引用其方法。
//System.in对象代表标准输入流设备,默认时为键盘。
System.out.print("Enter a line of text: ");
message1 = scan.nextLine();
//以字符串类型返回当前行剩余的所有输入数据项
System.out.println("You entered: \""+ message1 +"\"");
System.out.print("Enter a word of text: ");
message2 = scan.next(); //以字符串类型返回下一个输入数据项
System.out.println("You entered: \""+ message2 +"\"");
}
}
输出结果:
Enter a line of text: i love java
You entered: "i love java"
Enter a word of text: i love java
You entered: "i"
(3)返回指定类型的下一个数据输入项;
如果下一个数据项与指定的类型不一致,则将抛出异常InputMismatchException
int nextInt();
short nextShort();
long nextLong();
float nextFloat();
double nextDouble();
byte nextByte();
boolean nextBoolean();
例2:
package seven;
import java.util.Scanner;
public class Echo {
public static void main(String arge[]){
Scanner scan = new Scanner(System.in);
//创建Scanner类的对象,以便于引用其方法。 //System.in对象代表标准输入流设备,默认时为键盘。
int num1;
System.out.print("Enter a number of intrger: ");
num1 = scan.nextInt();
System.out.println("You entered: "+ num1 );
double num2;
System.out.print("Enter a number of double: ");
num2 = scan.nextDouble();
System.out.println("You entered: "+ num2 );
}
}
输出结果1:
You entered: 12
Enter a number of double: 12.4
You entered: 12.4
输出结果2:
Enter a number of intrger: 12.3
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at seven.Echo.main(Echo.java:21)
(4)如果Scanner 对象还有输入数据项,则返回true;
反之,不执行hasNext()函数,什么都不返回
boolean hasNext();
例3:
package seven;
import java.util.Scanner;
public class Echo {
public static void main(String arge[]){
Scanner scan = new Scanner(System.in);
String message;
System.out.print("Enter a word of text: ");
message = scan.next(); //以字符串类型返回下一个输入数据项
System.out.println("You entered: \""+ message +"\".");
if(scan.hasNext())
System.out.println(" there are words that haven't been input");
}
}
输出结果1:
Enter a word of text: i love java
You entered: "i".
there are words that haven't been input
输出结果2:
Enter a word of text: ilovejava
You entered: "ilovejava".
例4:
package seven;
import java.util.Scanner;
public class Echo {
public static void main(String arge[]){
Scanner scan = new Scanner(System.in);
String message;
System.out.print("Enter a word of text: ");
message = scan.next();
System.out.println("You entered: \""+ message +"\".");
if(scan.hasNext())
System.out.println("there are words that haven't been input");
int number;
System.out.print("Enter a number: ");
number = scan.nextInt();
System.out.println("You entered the number:"+number);
if(scan.hasNext())
System.out.println("there are numbers that haven't been input");
}
}
输出结果1:
Enter a word of text: i love java
You entered: "i".
there are words that haven't been input
Enter a number: Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at seven.Echo.main(Echo.java:16)
分析:第一次输入i love java后,输出的只有i,love 和 java两个单词在缓冲区里;在遇到scan.nextInt()函数,需要第二次输入时,由于缓冲区里还有数据,则不需要从键盘再输入,直接读缓冲区里的数据,则出现缓冲区里的数据类型与要求的数据类型不一致的异常。
输出结果2:
Enter a word of text: ilovejava
You entered: "ilovejava".
例5:
package seven;
import java.util.Scanner;
public class Echo {
public static void main(String arge[]){
Scanner scan = new Scanner(System.in);
String message4;
boolean bool = false;
System.out.print("Enter some words: ");
message4 = scan.next();
System.out.println("You entered:\""+message4+"\".");
bool = scan.hasNext();
if(bool)
System.out.println("there are words haven't been input");
else
System.out.println("all words have been input");
}
}
输出结果1:
Enter some words: i love java
You entered:"i".
there are words haven't been input
输出结果2:
Enter some words: ilovejava
You entered:"ilovejava".
和例5的输出结果2,我怀疑scan.hasNext()这个函数在所有内容都输出后,就直接跳出了当前程序,不再运行。
:
package seven;
import java.util.Scanner;
public class Echo{
public static void main(String arge[]){
Scanner scan = new Scanner(System.in);
//创建Scanner类的对象,以方便引用其方法;
//System.in对象代表标准输入流对象,默认为键盘。
String message5;
int number2;
System.out.print("Enter a string:");
message5 = scan.next();
System.out.println("You entered:\""+message5+"\".");
System.out.print("Enter a number:");
number2 = scan.nextInt();
System.out.println("You entered: "+number2);
}
}
:
Please enter a string:ilovejava
You entered:"ilovejava".
Please enter a number:1234 456
You entered:"1234".
:
Please enter a string:i love java
You entered:"i".
Please enter a number:Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at seven.Echo.main(Echo.java:17)
??怎么知道一个字符串或数字串有多少个字符或数字单元组成。那么我就可以决定要输入几个字符数字单元,已经输入了多少个,还有多少个没有输入。
交互程序 Scanner类的更多相关文章
- Java常用类(二) Scanner类和大数类
二.Scanner类 有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门.因此,这些程序员开始学J ...
- java中scanner类的用法
在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...
- Java中Scanner类和BufferReader类之间的区别
java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的 ...
- Java用Scanner类获取用户输入
用Java编写程序时,有些数据需要用户输入,这个时候需要调用java提供的Scanner类,这个类在包java.util下,比如求一个矩形的面积,简单的看一下用法: import java.util. ...
- Scanner类的使用
Scanner类的使用 (接受键盘输入) java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java AP ...
- Scanner类的.next()和.hashNext()方法
使用Scanner类可以很方便地便获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件.输入流 .字符串中解析出基本类型值和字符串值.Scanner类提供了多个构造器,不同 ...
- Scanner类详解
Scanner类用于获取键盘输入(是一个基于正则表达式的文本扫描器),它可以从文件.字符串.输入流中解析出基本类型值和字符串值.Scanner类提供了多个构造器,不同的构造器可以接收文件.字符串和输入 ...
- 三目运算符与Scanner类
1.三目运算符(条件运算符)格式:X ? Y : ZX表达式必须是boolean类型 的表达式执行流程:首先计算X表达式的结果,如果X的结果为true,那么整个表达式的结果就是Y的值如果X的结果为tr ...
- Scanner类、Random类、ArrayList 类
1.1 什么是Scanner类一个可以解析基本类型和字符串的简单文本扫描器. 例如,以下代码使用户能够从 System.in 中读取一个数: Scanner sc = new Scanner(Syst ...
随机推荐
- 使用Selenium爬取淘宝商品
import pymongo from selenium import webdriver from selenium.common.exceptions import TimeoutExceptio ...
- C语言I—2019秋作业01
1您对软件工程专业或计算机科学与技术专业了解是什么? 工程专业将成为一个新的热门专业.软件工程专业以计算机科学与技术学科为基础,突出软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上 ...
- js基础总结01 --操作DOM
1.选择对象 通过id来选择绑定一个dom节点 :document.getElementById('p1'): 通过类名来绑定一个类数组的对象集合,:document.getElementsByCla ...
- P2893 [USACO08FEB]修路
直入主题. 农夫约翰想改造一条路,原来的路的每一段海拔是Ai,修理后是Bi花费|A_i–B_i|.我们要求修好的路是单调不升或者单调不降的.求最小花费. 数据范围:n<=2000,0≤ Ai ≤ ...
- 表格可拖拉列改变列大小(使用的时候将youElement全部替换称你要添加这个效果的元素,需是jqery的选择器格式,如:$("table th/td"))
$(function () { var isMouseDown = false; var currentTh = null; youElement.bind({ mousedown: function ...
- STL.h
最近老是被系统的一些STL卡到飞起,然后就手打了一个STL.h 库函数还没有打完,以后打新的还会再更,大家也可以使用,顺便帮我找一下bug,然后我再改进! template< typename ...
- Ember.js和Vue.js对比,哪个框架更优秀?
本文由葡萄城技术团队于博客园翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. JavaScript最初是为Web应用程序创建的.但是随着前端技术的 ...
- jsp页面不乱码,外部引用的js弹出对话框乱码
今天在做一个课程设计的时候,写到一个界面注册,在用js判断数据的正确性时,碰到了一个js弹出框的乱码问题.在网上找寻了很久,也找了很多博客看,但是发现怎么样都不能解决我的问题,下面给出几个比较经典的解 ...
- LeetCode 5264 在受污染的二叉树中查找元素 Find Elements in a Contaminated Binary Tree
地址 https://leetcode-cn.com/contest/weekly-contest-163/problems/find-elements-in-a-contaminated-binar ...
- docker showdoc安装
自动脚本安装 前言 自动脚本脚本利用docker来安装运行环境,适用于linux服务器.如果你的服务器没有docker服务,脚本会尝试安装之.安装docker的过程可能有些慢.如果你已经安装过dock ...