交互程序

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类的更多相关文章

  1. Java常用类(二) Scanner类和大数类

    二.Scanner类 有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门.因此,这些程序员开始学J ...

  2. java中scanner类的用法

    在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...

  3. Java中Scanner类和BufferReader类之间的区别

    java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的 ...

  4. Java用Scanner类获取用户输入

    用Java编写程序时,有些数据需要用户输入,这个时候需要调用java提供的Scanner类,这个类在包java.util下,比如求一个矩形的面积,简单的看一下用法: import java.util. ...

  5. Scanner类的使用

    Scanner类的使用 (接受键盘输入) java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java AP ...

  6. Scanner类的.next()和.hashNext()方法

    使用Scanner类可以很方便地便获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件.输入流 .字符串中解析出基本类型值和字符串值.Scanner类提供了多个构造器,不同 ...

  7. Scanner类详解

    Scanner类用于获取键盘输入(是一个基于正则表达式的文本扫描器),它可以从文件.字符串.输入流中解析出基本类型值和字符串值.Scanner类提供了多个构造器,不同的构造器可以接收文件.字符串和输入 ...

  8. 三目运算符与Scanner类

    1.三目运算符(条件运算符)格式:X ? Y : ZX表达式必须是boolean类型 的表达式执行流程:首先计算X表达式的结果,如果X的结果为true,那么整个表达式的结果就是Y的值如果X的结果为tr ...

  9. Scanner类、Random类、ArrayList 类

    1.1 什么是Scanner类一个可以解析基本类型和字符串的简单文本扫描器. 例如,以下代码使用户能够从 System.in 中读取一个数: Scanner sc = new Scanner(Syst ...

随机推荐

  1. Python爬虫常用小技巧之设置代理IP

    设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站.假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问.所以你可以设置一些代理服务器来 ...

  2. 暑期集训20190725 胜地不常(paradise)

    [题目描述] 给定两个长度为n的非负整数数组a,b, [输入数据] 第一行一个整数n. 第二行n个整数a1~an. 第三行n个整数b1~bn. [输出数据] 一行一个整数表示答案. [样例输入] 4 ...

  3. 学习笔记51_MongoDB使用

    MongoDB的包: 例如:设置Mongodb端口 在命令行: F:\MongoDB>mongod.exe --port:3306 做集群: 安装和使用: 1.在服务中添加MongoDB ( 指 ...

  4. [考试反思]0807NOIP模拟测试14:承认

    一大排并列Rank#9之一. 考试题还没改完(而且并不会模拟退火)所以题解又只能咕了 然而并不想吐槽T2对sjzyz是原题导致4个AC里面有3个他们的 虽说这次的成绩不怎么样,但是这次的考试过程是全新 ...

  5. C/C.cpp

    我是怎么说服自己这题没有答案单调性的? 当轮数大于最优答案时,B的操作就成了捣乱,会使A多进行若干操作才能回复原状态 嗯,所以答案没有单调性. 就没去想A的操作可以把B的抵消啊.. 另外swap没有交 ...

  6. git命令--subtree

    目录 git命令--subtree subtree 主要命令 git subtree add   --prefix=<prefix> <commit> git subtree ...

  7. 『题解』BZOJ3172 [TJOI2013]单词

    原文地址 Problem Portal Portal1:BZOJ Portal2:Luogu Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想 ...

  8. 迁移桌面程序到MS Store(11)——应用SVG图标

    在传统桌面程序中,对图标的使用大多是直接嵌入JPG或者PNG的图片.在祖传的1366x768分辨率下,并没有什么问题.相对于手机硬件的突飞猛进,也侧面反映了PC行业的落寞和桌面程序开发的不思进取.用3 ...

  9. 品优购(IDEA版)-第二天

    品优购-第2天 学习目标 目标1:运用AngularJS前端框架的常用指令 目标2:完成品牌管理的列表功能 目标3:完成品牌管理的分页列表功能 目标4:完成品牌管理的增加功能 目标5:完成品牌管理的修 ...

  10. Genymotion模拟器安装搜狗输入法

    Genymotion模拟器默认没有中文输入法,如果在一些调试中涉及到需要输入中文则必须需要安装中文输入法. 这里以搜狗输入法为例. 这里需要注意一下几点就行: 百度下载一个搜狗输入法,需要特别注意的是 ...