一、scanner简介
是读取控制台输入的内容,他的创建方式是
Scanner scanner = new Scanner(System.in); //创建scarnner对像
scanner.close(); //用完记得关闭
二、scanner.hasNext() 和 scanner.hasNextLine() 的区别
首先来看他们的用法,以上方法是成对使用的:
scanner.hasNext() 和 scanner.next()
scanner.hasNextLine() 和 scanner.nextLine()
1、scanner.hasNext() 和 scanner.next()
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = "";
System.out.println("请入一行文字");
if (scanner.hasNext()){
str = scanner.next();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
运行结果:
请入一行文字
hi my dear!
输出的内容为:hi
2、 scanner.hasNextLine() 和 scanner.nextLine()
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = "";
System.out.println("请入一行文字");
if (scanner.hasNextLine()){
str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
输出结果:
请入一行文字
hi my dear
输出的内容为:hi my dear
从以上结果来看
一、next()
1、一定要读取到有效字符后才可以结束输入,输入空格和回车均不结束
2、对输入有效字符之前的空白,next() 方法会将期自动过滤掉
3、输入有效字符后的空白,next() 会作为结束字符,因此next()不能得到带有空格的字符串
二、nextLine()(使用的更多)
1、以回车结束,就是说nextLine可以读取回车之前的所有字符,因此也就能读取带空格的字符串
以上,scanner还有很多其他
举个例子,不停的输入整数,每个数字回车,直到输入非数字字符结束,计算输入数字的和以及平均数
import java.text.DecimalFormat;
import java.util.Scanner;
public class Project1 {
public static void main(String[] args) {
int sum = 0;
int count = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字,每个数字按回车确认,输入非数字结尾");
while (scanner.hasNextInt()) {
if (scanner.hasNextInt()) {
sum = sum + scanner.nextInt();
count = count + 1;
} else {
break;
}
}
if (count != 0) {
DecimalFormat decimalFormat = new DecimalFormat("0.00");
String average = decimalFormat.format((float) sum / count);
System.out.println("输入的和是:" + sum);
System.out.println("count的值是" + count);
System.out.println("平均值是:" + average);
} else {
System.out.println("不可以输入零个数字");
}
scanner.close();
}
}