Scanner进阶

  • hasNext() 和 hasNextLine 要么接收只一个数据,要么只接收一行数据,那么,我们如果只想要接受一种数据,怎么做?
    举例:1. 只接收Int型数据

public class Demo04 {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

//从键盘接受数据,初始化值
int i = 0;

System.out.println("请输入整数:");

if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
}else{
System.out.println("false");
}//如果......就......
}
}


注意:如果hasNextInt()不在if语句中,在输入不是整数的数据时,会报错。

2.只接收Double型数据

package com.lijianhua.Scanner;

import java.util.Scanner;

public class Demo04 {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接受数据,初始化值

Double f = 0.0;
System.out.println("请输入小数:");

/*hasNextDouble作用
一是判断是否已经键盘录入了
* 二则是,如果键盘没有录入数据,则开始键盘录入
* */
if (scanner.hasNextDouble()){
f = scanner.nextDouble();
System.out.println("小数数据:"+ f );
}else{
System.out.println("false");
}//如果......就.......

}

}


进阶题目

输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果?

注意:在输入数字的时候,请每输一个数字,按Enter结束。如果你按空格隔开将会看见如下结果在你使用ENTER键前你会一直输入,空格变成了分隔符,也不是说不能用空格

Java流程控制02   Scanner进阶_java

package com.lijianhua.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()){
double x = scanner.nextDouble();
m = ++m;//++m //注意m++,++m的区别
sum = sum + x;
System.out.println("你输入了第"+m+"个数据,当前结果sum为:"+sum); //确认你当前输入了多少数字和当前结果
}//如果下一个输入的还是数字,继续循环,否则结束循环
System.out.println(m + "个数的和为:"+sum);
System.out.println(m + "个数和的平均数为:"+(sum/m));


scanner.close();
}
}