【Java流程控制】输入--scanner
1.特点
-
使用scanner是得用户输入内容。
-
scanner 是在Java05之后的新特性。
-
需要定义
2.用法
-
定义:创建一个扫描对象,并且封装成scanner
Scanner scanner = new Scanner(System.in);
-
接收:使用next接收
String str = scanner.next();
3.接收方法的特点
01使用next接收
-
以空格当作分隔符或结束符
-
当遇到空格后默认结束不会执行后续的内容
-
读取到有效字符才可以结束输入
-
不能得到带空格的字符串
02使用nextLine接收
-
一回车当作结束符,没按回车之前会输出所有内容
4.注意!!!
-
由于scanner是基于I/O流的类型,所以最后需要关闭否则会占用内存消耗
scanner.color();
5.使用scanner判断类型
day02完成
01hasNext使用(判断类型)
-
hasNext(); 使用来判断类型的,可以在后面添加类型名可以使得程序精准确定到类型。比如:hasNextInt();、hasNextDouble();....
-
一般来说我们把它配合条件控制中去。比如:if、while....
if (hasNextInt()){ // 如果判断的是整数就...
pass
}
02next扩展
-
那么聪明的你看来已经是想到了next也是可以添加定位精准类型的。
-
如果用它们两个组合就可以写出一个小算法啦
-
题目在这快去试试:输入多个数字。求出总和与平均数,每输入一个数字使用回车确认,输入的如果是非数字结束并执行结果。
-
这里我将搞两个版本,一个是师父的答案一个是我的答案。
-
标准答案
-
这里的意思其实就是sum = sum + save,这里save是0如果新来一个数是1的话,那么sum的整体也就是1,那么再次执行到这里的时候输入的值是2的情况下 此时的sum = save + sum也就是 sum = 2 + 1这个意思啦。
-
Scanner scanner = new Scanner(System.in);
double sum = 0.0; // 提前定义相加需要保存的值
int i = 0; // 计次用的值,后面也可以用来记平均数
while (scanner.hasNextDouble()){ // 使用while循环来判断只要不是括号中的条件就一直执行
double save = scanner.nextDouble(); // 使用save来保存输入的值
sum += save; // 1
i++;
System.out.println("输入了第" + i + "个数据,当前sum=" + sum);
}
System.out.println("共" + i + "个数;\n和为"+sum + ";\n平均数为" + (sum / i));
scanner.close();
-
我的乱七八糟的答案(虽然答对了)
int i = 1; // 计次使用的值
float save = 0.0f; // 保存输入使用的预备值
float date = 0.0f; // 最终的结果使用的预备值
float num = 0.0f; // 最后取平均数使用的预备值
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第"+i+"次输入的数字:"); // 写成这样的原因:由于我想让其出现的结果是先出提示后输入
while (scanner.hasNextInt() || scanner.hasNextFloat()){ // 写成这样的原因:认为Java是强类型语言如果不加Int判断的话害怕判断不出来
System.out.println("请输入第"+(i+1)+"次输入的数字:"); // 写成这样的原因:显示的计数由于上面的print导致会出现两次同样的数字所以再此+1
save = scanner.nextFloat(); // save保存输入值
date = save + date; // date相加
if (!(scanner.hasNextInt() || scanner.hasNextFloat())){ // 写出这样的原因:如果发现整数和小数以外的就在此停止,如果不提前停止会出现计次i多加的情况。
break;
}
i++;
}
num = date / i;
System.out.println("总数是:"+date+"平均数是:"+num);
scanner.close();

输入多个数字。求出总和与平均数,每输入一个数字使用回车确认,输入的如果是非数字结束并执行结果。
浙公网安备 33010602011771号