Scanner 对象
-
Java给我们提供了一个工具类Scanner可以让我们获取到用户的输入。
-
导包:java.until.Scanner
-
基本语法
Scanner s=new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取钱我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据。
next()
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才能将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
package ShiYan;
import java.util.Scanner;
public class ShiYan {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);//创建一个扫描器用来检测用户输入没有
System.out.println("用hasNext方法来接收用户输入了什么");
System.out.println("请输入内容:");
if (scanner.hasNext()) //判断用户输入了没有
{
String str=scanner.next();
//使用next方法接收
System.out.println("输出的内容为:"+str);
}
scanner.close();
//凡是io流的东西,用完之后一定要记得关闭。这是程序员的好习惯
}
}
nextLine()
- 以Enter为结束符,也就是说nextline()方法返回的是输入回车之前所有的字符。
- 可以获得空白的东西。
package ShiYan;
import java.util.Scanner;
public class ShiYan {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);//创建一个扫描器用来检测用户输入没有
System.out.println("用hasNext方法来接收用户输入了什么");
System.out.println("请输入内容:");
String str=scanner.nextLine();
//使用nextLine方法接收,就可以接收空格内容了,但是要注意哦!nextline()是可以接收空格的哦!就比如你直接输入空格就是空格哦!
System.out.println("输出的内容为:"+str);
scanner.close();
//凡是io流的东西,用完之后一定要记得关闭。这是程序员的好习惯
}
}
拓展
hasNext()有各种各样的基本数据类型的判断哦!
例如:
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0;
float f= 0.0F;
Scanner scanner=new Scanner(System.in);//创建一个扫描器用来检测用户输入没有
System.out.println("请输入一个整数:");
if (scanner.hasNextInt()) //判断用户输入了没有
{
String str=scanner.next();
//使用next方法接收
System.out.println("输出的数字为:"+str);
}
else {
System.out.println("输入的数字不为整数");
}
System.out.println("请输入一个小数:");
if (scanner.hasNextFloat()) //判断用户输入了没有
{
String str=scanner.next();
//使用next方法接收
System.out.println("输出的小数为:"+str);
}
else {
System.out.println("输入数字不为小数");
}
scanner.close();
//凡是io流的东西,用完之后一定要记得关闭。这是程序员的好习惯
}
每个基本数据类型类型都有对应的hasNext()检测方法。
作业
写一串代码判断输入多个整数的平均值,当输入非整数时,输出结果。
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=0;
double mean=0.0D;
int sum=0;
Scanner scanner=new Scanner(System.in);
System.out.println("该算术可以判断输入多个整数的平均值,当输入非整数时输出结果");
System.out.println("请输入整数数字:");
while (scanner.hasNextInt()) //判断是否是整数型
{
int x=scanner.nextInt();
a+=1;//a=a+1;
sum+=x;//sum=sum+x;
}
mean=(double)sum/a;//计算平均值,不要忘了如果计算是优先之前的数据类型哦,这里需要强制转换一下。
System.out.println("你输入的数字和为:"+sum);
System.out.println("平均值为:"+mean);
scanner.close();
}