09

it2024-12-06  11

一、Scanner概述

和Python的input()函数类似,Java提供了Scanner类供用户从控制台输入。我们使用import java.util.Scanner导入Scanner类,就可以实现获取用户输入的目的了。

1、导入Scanner类

import java.util.Scanner;

2、创建 Scanner 对象

下面是创建 Scanner 对象的基本语法:

Scanner sc = new Scanner(System.in);

3、控制台接收输入

String str1 = sc.next(); String str2 = sc.nextLine();

4、判断是否还有输入

(1)判断是否还有输入的语法

sc.hasNext(); sc.hasNextLine();

(2)nextLine()和next()的区别

next()一定要读取到有效字符才可以结束输入,对输入的有效字符开头的空白会自动去除,并将有效数据中间的空格看作为分隔符或者结束符。next接收的输入不能有空格,否则空格后的数据无法接收到。nextLine()以Enter为结束符,包括输入的有效字符前面和中间的空格。

5、关闭接收

sc.close();

二、Scanner类应用

1、接收单个输入

实例1:用next和nextLine接收输入,查看区别

使用next接收输入 import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("next获取输入:"); String str1 = sc.next(); System.out.println("next获取输入的打印信息:"+str1); sc.close(); } } Console: next获取输入: ccl 00 next获取输入的打印信息:ccl

这里我们可以看见,输入的信息有空格,空格后的数据就没有被接收到。

使用nextLine接收输入 import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("next获取输入:"); String str1 = sc.next(); System.out.println("next获取输入的打印信息:"+str1); sc.close(); } } Console: nextLine获取输入: ccl 00 nextLine获取输入的打印信息:ccl 00

使用nextLine接收输入,空格后的输入一样可以被接收到。

实例2:使用hasNext()和hasNextLine()判断是否还有输入

import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("next获取输入:"); if(sc.hasNextLine()) { String str1 = sc.nextLine(); System.out.println("next获取输入的打印信息:"+str1); } sc.close(); } } next获取输入: ccl 001 next获取输入的打印信息:ccl 001

2、接收多个输入

我们可以使用while循环结构,实现输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,并通过输入非数字来结束输入并输出。如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

实例3:使用while循环实现多个输入

import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // TODO Auto-generated method stub 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)); scan.close(); } } Console: 11 12 13 14 mm 4个数的和为50.0 4个数的平均值是12.5

实例4:使用if条件判断判断输入类型

import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // TODO Auto-generated method stub 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("输入的不是小数!"); } scan.close(); } } Console: 输入整数:22 整数数据:22 输入小数:35.5 小数数据:35.5

三、小结

最新回复(0)