01-Scanner对象
-
之前学习的基本语法中并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner 是Java5 的新特征,我们可以通过Scanner 类来获取用户的输入
-
基本语法:
1 Scanner s = new Scanner(System.in);
-
通过Scanner 类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据
-
next():
-
一定要读取到有效字符后才可以结束输入.
-
对输入有效字符前遇到的空白,next() 方法会自动将其去掉
-
-
next() 不能得到带有空格的字符串
-
1 package xiaoka.Scanner; 2 3 import java.util.Scanner; 4 5 public class Demo01 { 6 public static void main(String[] args) { 7 8 // 创建一个扫描器对象,用于接收键盘数据 9 Scanner scanner = new Scanner(System.in); 10 11 System.out.println("使用next方式接收"); 12 13 //判断用户有没有输入字符 14 if (scanner.hasNext()){ 15 //使用next方式接收 16 String str = scanner.next();//程序会等待用户输入完毕 17 System.out.println("输出的内容为:"+str); 18 } 19 20 //凡是属于IO流的类如果不关闭会一直占用资源,要养成良好习惯用完就关掉 21 scanner.close(); 22 } 23 }
-
nextLine():
-
以Enter为结束符,也就是收 nextLine()方法返回的是输入回车之前的所有字符.
-
可以获得空白
-
1 package xiaoka.Scanner; 2 3 import java.util.Scanner; 4 5 public class Demo02 { 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 9 System.out.println("使用nextLine方式接收"); 10 11 //判断是否还有输入 12 if (scanner.hasNextLine()) { 13 //使用next方式接收 14 String str = scanner.nextLine(); 15 System.out.println("输出的内容为: "+str); 16 } 17 18 scanner.close(); 19 } 20 }
不使用if语句也可以:
1 package xiaoka.Scanner;
2
3 import java.util.Scanner;
4
5 public class Demo03 {
6 public static void main(String[] args) {
7 // 从键盘接收数据
8 Scanner scanner = new Scanner(System.in);
9
10 System.out.println("请输入数据");
11
12 String str = scanner.nextLine();
13
14 System.out.println("输出的内容为: "+str);
15
16 scanner.close();
17 }
18 }
Scanner进阶使用
1 package xiaoka.Scanner;
2
3 import java.util.Scanner;
4
5 public class Demo04 {
6 public static void main(String[] args) {
7 Scanner scanner = new Scanner(System.in);
8
9 //从键盘接收数据
10 int i = 0;
11 float f = 0.0f;
12
13 System.out.println("请输入整数");
14
15 //如果。。。那么
16 if (scanner.hasNextInt()){
17 i = scanner.nextInt();
18 System.out.println("整数数据:"+ i);
19 } else {
20 System.out.println("输入的不是整数数据!");
21 }
22
23
24 System.out.println("请输入小数");
25
26 //如果。。。那么
27 if (scanner.hasNextFloat()){
28 f = scanner.nextFloat();
29 System.out.println("小数数据:"+ f);
30 } else {
31 System.out.println("输入的不是小数数据!");
32 }
33
34
35 scanner.close();
36 }
37 }
小测试
package xiaoka.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("你输入了第"+m+"个数据,当前结果是sum="+sum);
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值为" + (sum / m));
scanner.close();
}
}