【狂神说Java】学习笔记9:Java流程控制之Scanner应用
[01] 用户交互Scanner
[02] 顺序结构
[03] 选择结构
[04] 循环结构
[05] break & continue
[06] 练习题讲解
[01] 用户交互Scanner
Scanner对象
用来获取用户的输入,采集输入信息。
通过next() 和 nextLine() 获取用户输入的字符串;
通过hasNext() 和 hasNextLine() 判断是否还有输入的数据。
next() 和 nextLine()
next() | 不能得到带有空格的字符串,返回结果是空格之前的输入内容。 |
---|---|
nextLine() | 可以获取空白,返回结果是回车键之前的输入结果。 |
案例分析
案例1:Scanner扫描用户输入后,并next输出一段文字
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
// 案例:Scanner扫描用户输入后,并next输出一段文字
// 创建一个扫描对象,用来接收用户的输入内容
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式来接收:");
// 判断用户有没有输入字符串
if (scanner.hasNext()){
// 使用next方式接收(只接收一段话,到空格或转行前为止。)
String str=scanner.next();
System.out.println("接收到的输出内容为:" + str);
}
// 凡是I/O流的类如果不关闭的话会一直占用资源,养成用完就关的习惯。
scanner.close();
}
}
-------------- 控制台输出结果 --------------
使用next方式来接收:
hello world
接收到的输出内容为:hello
案例2:Scanner扫描用户输入后,并nextLine输出一整行话
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// 案例2:Scanner扫描用户输入后,并nextLine输出一整行话
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式来接收一行:");
// 判断用户有没有输入字符串
if (scanner.hasNextLine()){
// 使用nextLine方式接收一整行话
String str=scanner.nextLine();
System.out.println("接收到的输出内容为:" + str);
}
// 凡是I/O流的类如果不关闭的话会一直占用资源,养成用完就关的习惯。
scanner.close();
}
}
-------------- 控制台输出结果 --------------
使用nextLine方式来接收一行:
hello world
接收到的输出内容为:hello world
总结:整行扫描用户输入的简单写法
// 整行扫描用户输入的简单写法
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str =scanner.nextLine();
System.out.println("输出的内容为:" + str);
scanner.close();
案例3:检测用户输入整数和小数
package scanner;
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();
System.out.print("程序结束");
}
}
-------------- 控制台输出结果 --------------
请输入整数:
1231231.4
你输入的不是整数!
请输入小数:
你输入的小数是:1231231.4
程序结束
案例4:Scanner进阶应用
要求:可输入多个数字求总和和平均数,每输入一个数字用空格隔开,通过输入非数字来结束输入,并输出结果。
package scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
/* 案例:Scanner进阶应用
要求:可输入多个数字求总和和平均数,每输入一个数字用空格隔开,通过输入非数字来结束输入,并输出结果。
写法:1.开写Scanner,2.定义总和与输入数量,
3.while语句配合判断是否还有输入并求和求平均,4.输出总和和平均数的结果
*/
Scanner scanner = new Scanner(System.in);
double sum=0; // 定义数字总和
int m=0; // 输入了多少个数字
System.out.println("请输入多个数字,点击enter/space输入下一个,输入非数字结束操作:");
// 通过循环判断是否还有输入,并在里面对每一次进行求和并统计
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m = m + 1; // 等于 m++
sum = sum + x; // 等于sum += x
System.out.println("你输入了第"+ m +"个数据,当前的结果为"+sum);
}
System.out.println(m + "个数的和为:" + sum);
System.out.println(m + "个数的平均值为:" + (sum/m) );
scanner.close();
}
}