Scanner类
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.。想要通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。
Scanner scan = new Scanner(System.in);
Scanner类各种方法的实现
next()与nextLine()读取字符串
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
public static void main(String[] arg){
Scanner in1=new Scanner(System.in);
System.out.println("What is your name?");
String name1=in1.nextLine();
System.out.println("你的姓名是"+name1);
Scanner in2=new Scanner(System.in);
System.out.println("What is your name?");
String name2=in2.next();
System.out.println("你的姓名是"+name2);
}
结果:
What is your name?
wan ming
你的姓名是wan ming
What is your name?
wan ming
你的姓名是wan
netInt()和nextFloat()读取整数和浮点数及通过hasnextXxx进行判断
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = 0 ;
float f = 0.0f ;
System.out.print("输入整数:");
if(scan.hasNextInt()){ // 判断输入的是否是整数
i = scan.nextInt() ;
System.out.println("整数数据:" + i) ;
}else{ // 如果输入错误的信息
System.out.println("输入的不是整数!") ;
}
System.out.print("输入小数:");
if(scan.hasNextFloat()){ // 判断输入的是否是小数
f = scan.nextFloat() ;
System.out.println("小数数据:" + f) ;
}else{ //如果 输入错误的信息
System.out.println("输入的不是小数!") ;
}
}
结果:
输入整数:10
整数数据:10
输入小数:10.0
小数数据:10.0
netDouble()读取浮点数及输入多个数字求总和平均数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double sum = 0;
int m = 0;
while(scan.hasNextDouble()) {
double x = scan.nextDouble();
m = m + 1;
sum = sum + x;
}
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均值是"+(sum/m));
}
结果:
10
12
15
24
25
end
5个数的和为86.0
5个数的平均值是17.2