Scanner对象
-
java提供我们一个工具类,可以获取用户的输入。java.util.Scanner是java5的新特性,我们可以通过Scanner类获得用户的输入
-
基本语法:
Scanner scanner = new Scanner(System.in); -
通过Scanner类的next(),和nextLine()方法获取输入的字符串,在读取之前我们一般使用hasNext(),hasNextLine()方法判断是否还有输入的数据。
public static void main(String[] args) { //构建一个接收器,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方法接收:"); if (scanner.hasNext()) {//使用hasNext判断是否有数据 String str=scanner.next();//使用next方法接收(next方法遇到空格会停止) System.out.println("输出内容为:"+str); } //凡是属于IO流的类如果不关闭会一直占用资源,使用完要及时关闭 scanner.close(); }
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
if(scanner.hasNextLine()){
String str=scanner.nextLine();
System.out.println(str);
}
scanner.close();
}
-
next():
- 一定要读取到有效字符之后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动去除空白
- 只有输入有效字符之后才将其后面输入的空白符作为分隔符或者停止符
- next()方法不能得到含有空格的字符串
-
nextLine():
- 以enter为结束符,即返回输入回车前的所有字符
- 可以获得空白
Scanner的不同数据类型输入
-
判断数据类型
public static void main(String[] args) { Scanner scanner =new Scanner(System.in); System.out.println("please enter a number:"); if (scanner.hasNextInt()){ int i = scanner.nextInt(); System.out.println("int number:" + i); }else { System.out.println("not a int number"); } if (scanner.hasNextFloat()){ float f=scanner.nextFloat(); System.out.println("float number:" + f); }else{ System.out.println("not a float number"); } }
简单输入计算
- 输入多个数字,并求其总和和平均数,每输入一个数字使用回车确定,输入非数字类型结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
//和sum
double sum=0;
//输入的数字个数
int number=0;
//通过循环判断是否还有输入,并在里面对每次进行求和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
number = number + 1;
sum = sum + x;
System.out.println("你已经输入了第" + number + "个数据,当前结果为sum=" + sum);
}
//循环条件不满足,即输入了非数字才退出循环执行下列输出语句
System.out.println(number + "个数的和为" + sum);
System.out.println(number + "个数的平均值为" + (sum/number));
scanner.close();
}
浙公网安备 33010602011771号