Scanner对int,浮点数的支持
- 如果…那么
if{
}else{
}
package com.kuang.scanner;
import java.util.Scanner;
//Scanner对int,浮点数的支持
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("请输入整数:");
//如果...那么 如果是真的就执行16~18行
if (scanner.hasNextInt()){ //判断输入的是否还有int
i = scanner.nextInt(); //等待输入是否为整数,如果有就接收 i前不用int,只第一次定义,后面直接用
System.out.println("整数数据:"+i);
}else{//否则的意思
System.out.println("您输入的不是整数数据!");
}
scanner.close();
}
}
小数同理
只需改成:
if (scanner.hasNextFloat())
f = scanner.nextFloat();
System.out.println("整数数据:"+f);
合并
package com.kuang.scanner;
import java.util.Scanner;
//Scanner对int,浮点数的支持
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("请输入整数:");
//如果...那么 如果是真的就执行16~18行
if (scanner.hasNextInt()){ //判断输入的是否还有int
i = scanner.nextInt(); //等待输入是否为整数,如果有就接收 i前不用int,只第一次定义,后面直接用
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- if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println(“整数数据:”+i);
}else{
System.out.println(“您输入的不是整数数据!”);
}
停在 f = scanner.nextFloat();因为这个方法可以等待用户输入
- if (scanner.hasNextInt()){
程序结束
输出错误数字
- 因为输出的不是整数,所以执行else后
if (scanner.hasNextInt()){else{
i = scanner.nextInt();
System.out.println(“整数数据:”+i);
}
System.out.println(“您输入的不是整数数据!”);
} - 之后运行System.out.println(“请输入小数:”);
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println(“小数数据:”+f);
}else {
System.out.println(“您输入的不是小数数据!”);
}
scanner.close();
}
}
因为10.1是小数所以执行else前,直到关闭scanner
Ctrl+左键点击类,可以进到类的源码
练习
输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
package com.kuang.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;//计算输入多少数字
System.out.println("请输入数据");
//通过循环判断是否还有输入,并在里面对每一次进行求和&统计
while(scanner.hasNextDouble()){//循环语句,会不停的走,直到结束或者bug
double x = scanner.nextDouble();//是否还有下一个数,如果有就保存在变量里
//输入完一个数,就让m+1
m = m+1;//m++
sum = sum + x;//和=当前的和+输入的数字 比如输入第一个数字x=10,则sum=10,第二次20,不停累加
System.out.println("你输入了第"+m+"个数据,当前sum="+sum);
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值" + (sum / m));
scanner.close();
}
}
解析
- 首先根据题目要求定义了两个变量,定义了用户交互Scanner(无先后顺序)‘
double sum = 0;
int m = 0;
Scanner scanner = new Scanner(System.in);
- 接着先在屏幕上输出
System.out.println("请输入数据");
- 通过while判断是否还有输入,并在里面对每一次进行求和&统计,while语句会不停的走,直到结束或者bug
while(scanner.hasNextDouble()){//判断输入的是否还有Double
double x = scanner.nextDouble();//是否还有下一个数,如果有就接收并保存在变量里,这个地方在等待接收,直到按下回车,在}处重新进入下一个循环
m = m+1;//m++,每个循环都会加一,先赋值再增加
sum = sum + x;//和=当前的和+输入的数字 比如输入第一个数字x=10,则sum=10,第二次20,不停累加
System.out.println("你输入了第"+m+"个数据,当前sum="+sum);
}//通过字符串连接符+ 把每次输入数据按下回车之后的信息显示出来
- 循环直到不满足为double类型是跳出循环,然后用
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值" + (sum / m));
把跳出后的计算次数,总和,平均值用连接符显示
最后scanner.close();
- 关闭Scanner,因为是属于io流的类,不关闭会占用资源