用户交互Scanner
这里学习的内容是Java5带来的特征,她可以让我们实现程序和人的交互,java.util.Scanner,我们可以通过这个工具类也就是Scanner类,来获取用户输入。
基本语法
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
这里的具体用法如下:
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline接收数据:");
//判断用户有没有输入字符串
if(scanner.hasNextLine()==true){
//使用nextLine方式接收
String str = scanner.nextLine();
System.out.println("输出的内容:"+str);
}
scanner.close();
}
记得在最后要关闭scanner,另外一种next()方法:
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收:");
if (scanner.hasNext()==true){
String str = scanner.next();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
运行二者程序,会发现他们都不会停止,需要用户先输入字符串,回车之后,程序才会给上面的str赋值,然后程序才会继续下面的close,之后他才会停止,然后输出。但不同方法输出有差异。
next()方法
-
一定要读取到有效字符后才可以结束输出。
-
对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
-
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
-
next()不能得到带有空格的字符串。
nextLine()方法(常用)
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
-
可以获得空白。
不使用if
其实前面其实是用 if 语句来判断用户有没有输入字符串,也可以直接用定义变量的方式来写:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline接收数据:");
String str = scanner.nextLine();
System.out.println("输出的内容为:" + str);
scanner.close();
}
这里直接将if变成上面的String行,记住就可以了
其他的实用Scanner方法
比如输入数据时用户要输整数或小数,即int或float数据类型,可在 if 语句后面用scanner.nextInt()和scanner.nextFloat()来写,例子:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if(scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
}else{
System.out.println("你输入的不是一个整数数据!");
}
System.out.println("请输入小数:");
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:"+f);
}else{
System.out.println("你输入的不是一个小数数据!");
}
scanner.close();
}
上面这里有else内容,也就是如果不是整数就怎样,不是小数就怎样,如果一开始输入的不是整数,中间不会停;但如果第一步正确输入整数,程序会停下来等你输入小数。
除此以外,当我们需要球平均数和总数时,用while语句来写:
public static void main(String[] args) {
//输入多个数字,求其总和以及平均数,没输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//输入了多少数据
int m = 0;
//循环语句判断是否还有输入,并对里面进行求和输入
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;//就等于m=m+1
sum = sum + x;
System.out.println("你输入了第"+m+"个数据,当前结果为sum="+sum);
}
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均值为"+(sum/m));
scanner.close();
}