欢迎访问宙启技术站
智能推送

“使用Java中的Scanner函数进行用户输入数据的读取”

发布时间:2023-06-14 12:55:29

Scanner是Java中一个非常常用的类,主要用于从控制台(或其他输入源)读取用户输入。Scanner类可以帮助我们从输入流中提取基本类型和字符串。

功能

使用Scanner类可以读取以下类型的输入:

- byte

- short

- int

- long

- float

- double

- boolean

- String

除此之外,Scanner也可以从文件和字符串中读取输入。使用Scanner读取用户输入的好处是,可以更方便的进行输入验证和数据处理。

使用方法

在使用Scanner前,我们需要先导入java.util.Scanner包。然后我们可以创建一个Scanner的实例,来读取输入数据。

Scanner sc = new Scanner(System.in);

上述代码中,我们创建了一个名为sc的Scanner实例,System.in作为参数传入,表示从控制台读取输入。也可以从其他输入源中读取,比如文件:

Scanner sc = new Scanner(new File("filename.txt"));

文件名为filename.txt的文件将被从根目录读取。

一旦我们有了Scanner实例,就可以调用其各种方法来读取用户输入数据。

例如,以下代码可以读取用户输入的整数:

int num = sc.nextInt();

如果用户输入非数字字符,程序会抛出InputMismatchException异常。为了避免这种情况,我们可以使用hasNextInt方法来判断输入是否为整数:

if (sc.hasNextInt()) {

    int num = sc.nextInt();

} else {

    System.out.println("Invalid input");

}

hasNextInt()方法返回一个布尔值,表示下一个输入是否为整数。如果是,我们就可以调用nextInt()方法读取该整数。

除了hasNextInt()和nextInt(),Scanner还提供了很多方法来读取其他类型的输入,比如:

- nextByte()

- nextShort()

- nextLong()

- nextFloat()

- nextDouble()

- nextBoolean()

- next()

其中,next()方法用于读取字符串,它不会读取空格字符之后的字符。如果要读取整个字符串(包括空格),可以使用nextLine()方法:

String str = sc.nextLine();

Scanner还提供了各种用于验证输入的方法,例如:

- hasNext()

- hasNextLine()

- hasNextByte()

- hasNextShort()

- hasNextInt()

- hasNextLong()

- hasNextFloat()

- hasNextDouble()

这些方法都返回布尔值,表示是否有下一个输入。如果有,我们可以调用相应的读取方法来读取输入。如果没有,我们可以进行错误处理。

输入验证

除了使用Scanner自带的方法来验证输入,我们还可以使用正则表达式和其它方法来进行输入验证。

例如,以下代码可以验证用户输入是否为邮箱格式:

String email = sc.next();

if (email.matches("[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}")) {

    // valid input

} else {

    System.out.println("Invalid email");

}

这里我们使用了matches方法来验证输入是否符合正则表达式的要求。正则表达式用于描述一个字符串的特征,上述正则表达式用于描述一个合法的邮箱地址格式。如果输入符合要求,我们就可以进行后续操作。如果不符合要求,可以进行错误处理。

除了使用正则表达式,我们还可以使用其它方法进行输入验证,例如:

- parseInt():将字符串转为整数。如果输入不为整数,则会抛出NumberFormatException异常。

- parseDouble():将字符串转为浮点数。如果输入不为浮点数,则会抛出NumberFormatException异常。

- length():返回字符串的长度。通过判断字符串的长度是否符合要求来进行输入验证。

总结

Scanner类是Java中一个非常方便的工具类,它可以帮助我们从控制台(或文件等输入源)读入用户输入,并进行验证和处理。使用Scanner可以极大地简化用户输入的读取过程,并确保输入的有效性。在进行用户输入读取时,我们应该仔细考虑所需输入类型,使用相应的读取方法,并进行必要的验证和错误处理。