用户交互scanner/Scanner 对象
java提供的工具,用来获取用户输入。
java.util.Scanner是Java5引入的特征,用的时候程序最顶上加引用源
import java.util.Scanner
具体用法是
Scanner x = new Scanner(System.in);
配合使用
String str=x.nextline();
解释说明:通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext() 与 hasNextLine()判断是否还有输入的证据。
next()和nextline()
next()
nextline()
xxx.close();
public static void main(String[] args) {
//新定义了一个Scanner类型的x
Scanner x=new Scanner(System.in);
//将x新输入的内容给str
String str= x.nextLine();
System.out.println(str);
//用完关闭,养成良好习惯
x.close();
}
(x.close();用完就关闭,是良好的使用习惯)
举例:
要求创建一个扫描器对象,用于接收键盘输入的一句话(两个单词以上),并将这句话输出。
分别使用next()和nexline()输出结果,观察有什么区别。
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用Next方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用Next方式接收
String str = scanner.next();
System.out.println("输出的内容为:"+str);
}
//凡是属于IO流-即就是输入输出流的类,如果不关闭会一直占用资源,要养成良好的习惯,用完就关闭它。
scanner.close();
}
}
因为这句 String str = scanner.next();
所以如果输入了hello world 只是返回hello
使用nextLine() 这个用的多些
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接受数据:");
if (scanner.hasNextLine()){
String str =scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
}
}
因为这句String str =scanner.nextLine();
所以如果输入hello world则会返回hello world
类似的方法,也可使用hasNextFloat()或者hasNextInt()等 对输入数据的类型进行判断。
比如:输入两次,系统需要识别用户输入的内容分别是integer还是float。并产生对应的输出反馈。如果用户输入非数字,提示输入错误,如果输入数字,则返回该数字。
package scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
int i=0;
float f=0.0f;
Scanner x =new Scanner(System.in);
System.out.println("please enter the integer: ");
if(x.hasNextInt()) {
i=x.nextInt();
System.out.println("you have entered the integer: "+i);
}
else {
System.out.println("you didn't enter a proper integer");
}
System.out.println("please enter a float:");
if(x.hasNextFloat()){
f=x.nextFloat();
System.out.println("you have entered the float, which is: "+f);
}
else {
System.out.println("you didn't enter the float");
}
x.close();
}
}
please enter the integer:
56
you have entered the integer: 56
please enter a float:
78
you have entered the float, which is: 78.0
Process finished with exit code 0
//输入多个数字,求和与平均数,每输入一个数字,用回车确认,通过输入非数字来结束输入,并输出执行结果。
注意 这里用到了循环结构while
import java.util.Scanner;
public class testjan05{
public static void main(String[] args) {
System.out.println("please enter the numbers, use enter key after each numb and any other key to stop counting:"+"\n");
Scanner x= new Scanner(System.in);
int con=0;
float num =0;
float sum=0;
float data =0;
while (x.hasNextFloat()){
con=con+1;
num=x.nextFloat();
sum=sum+num;
}
data=sum/con;
System.out.println("you have entered "+con+" numbs and their sum is "+sum+" and average is "+data);
}
}
输出结果:
please enter the numbers, use enter key after each numb and any other key to stop counting:
1
2
3
4
5
6
7
8
9
10
go
you have entered 10 numbs and their sum is 55.0 and average is 5.5
equal
语句 判断A和B是否想等
B.equals("A")
import java.util.Scanner;
public class testjan05{
public static void main(String[] args) {
Scanner x= new Scanner(System.in);
String s= x.next();
if (s.equals("123")){
System.out.println("hello dear!");}
else
{ System.out.println("咒语错误,芝麻芝麻不开门");
}
}
}
switch语句
输入学生成绩A/B/C/D/或其他任何输入,返回
A-优秀
B-良好
C-合格
D-不及格
其它任意输入-输入不合法
import java.util.Scanner;
public class testjan05{
public static void main(String[] args) {
System.out.println("please enter the grade(A-D): "+"\n");
Scanner x= new Scanner(System.in);
if (x.hasNextLine()){
String grade = x.nextLine();
switch(grade){
case "A":
{System.out.println("优秀"); break;}
case "B": {System.out.println("良好");break;}
case "C": {System.out.println("合格");break;}
case "D": {System.out.println("不及格");break;}
default: {System.out.println("输入不合法");break;}
}
System.out.println();
}
}
}
输出结果
please enter the grade(A-D):
niubi
输入不合法