Scanner类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
Scanner类可以实现我们与计算机之间的交互
使用方法
- 导入import java.util.Scanner;
- Scanner scanner = new Scanner(System.in); //类的基本语法Scanne的r类的基本语法
- 可以通过Scanner类的**next()方法或者nextline()**方法获取用户输入的字符串
具体代码体现
nextline输入
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收");
//判断用户有没有接收字符串
if (scanner.hasNextLine()) {
//使用nextline方式接收
String str = scanner.nextLine();
System.out.println("输出内容为"+str);
}
//凡是IO流的类如果不关闭会一直占用资源
scanner.close();
}
}
使用过之后要记得scanner.close关掉 不然会一直占用资源
运行结果
注意:若果使用next方法接收 则不能输出world 因为next方法有局限性 而nextline方法则可以输出全部字符串
举例
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输出一个字符"+str);
}
}
}
运行结果
结果可现实是有局限性的 next()方法不能输出空格之后的部分
以上两份代码在读取前都用了hasNex()或者hasNextline()来判断是否还有需要输入的数据,若是不用其判断,也可以正常输入
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据");
String str = scanner.nextLine();
System.out.println("输出内容为"+str);
scanner.close();
}
运行结果
类似的也可以用nextInt() nextFloat()等来进行数据类型的输入
import java.util.Scanner;
public class Demo04 {
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();
}
}
运行结果
利用Scanner类来计算数学问题
例如:输入多个数字 计算平均数和总和 当输入非数字时结束执行
import java.util.Scanner;
public class Demo05 {
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+1; //m++
sum = sum + x;
}
System.out.println("总和为"+sum);
System.out.println("平均数为"+(sum/m));
scanner.close();
}
}
运行结果
写在最后
花朵在时间里凋零,种子在时间里成熟,一切都是无声的