Day 12
scanner进阶
Scanner 与if结合:
package oui;
import java.util.Scanner;
public class Day12 {
public static void main(String[] args)
{
int i;/*定义在方法中的中的变量不管是否赋值,
结构体都会永久改变他(如:重新赋值或者运算,
但是只定义在结构体中的变量出了结构体就无人认识了*/
float f;
Scanner sc = new Scanner(System.in);
// 如果缓冲区无值,has也会出发输入,不消费且缓冲区多一个值
if(sc.hasNextInt()) {//hasnext()这些语法不会消费值
i =sc.nextInt();//可输入多个值,直接一次执行下面遇到的next与hasnext的操作
System.out.println("int为"+i);
}else{
System.out.println("这不是int类型");
}
System.out.println("请输入小数");
if (sc.hasNextFloat()){//值会自动转化
f =sc.nextFloat();
System.out.println("小数为"+f);
}
sc.close();
}
}
Scanner完成简单运算while结合:
package oui;
import java.util.Scanner;
public class Day12_1_1 {
public static void main() {
int i = 0;
int sum = 0;
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
double x = sc.nextInt();
i++;
sum += x;
}
System.out.println(sum);
System.out.println(sum / i);
}
注意:
- has等用法不会消费掉缓冲区的值
- next等用法只在当前语句中生效
- 不同Scannner对象有不同缓存区但共用一个System.in
- 也存在类型自动转化
- 多余的值也可以用next()用法去消耗掉
浙公网安备 33010602011771号