Java 中的输入验证
验证是根据特定约束检查用户输入或数据库中的值的过程。应用验证以减少程序运行实际业务逻辑以及在用户输入中查找问题所花费的时间。该过程提高了性能,因此在失败的情况下会导致任何进一步的调试会话。
在 Java 代码中,我们使用 Scanner
类获取用户输入。Scanner 类有多种方法可以帮助验证输入内容。
下面是解释这些方法的代码块。
import java.util.Scanner;
public class InputValidation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter any text: ");
while (!scanner.hasNext("quit")) {
System.out.println(scanner.hasNextInt() ? "The Input text is int: " + scanner.nextInt()
: scanner.hasNextLong() ? "The Input text is long: " + scanner.nextLong()
: scanner.hasNextDouble() ? "The Input text is double: " + scanner.nextDouble()
: scanner.hasNextBoolean() ? "The Input text is boolean: " + scanner.nextBoolean()
: "The Input text is String: " + scanner.next());
}
}
}
在上面的代码块中,创建了 Scanner
类的一个实例。使用 new 关键字的构造函数调用采用 Input Stream 参数,例如 System.in
。
现在开始对 Scanner 实例进行实际工作。首先,在 while 条件中,应用检查以给出终止条件。该表达式使用 Scanner 类 hasNext
方法。该方法采用与输入标记匹配的模式。并检查输入是否是 quit
文本以外的任何内容。当 Scanner 对象关闭时,hasNext
方法会抛出 IllegalStateException
。
现在,当块被启动时,使用 hasNextInt
方法验证输入。只有当输入的文本是 int
值时,它才返回 true。使用 nextInt
方法从控制台将输入文本作为 int
扫描并打印在控制台上。nextInt()
方法在文本与整数正则表达式不匹配时抛出 InputMismatchException
,当 Scanner 实例关闭时抛出 IllegalStateException
。
现在整个检查块都写在嵌套的三元
语句中。如果第一个条件被评估为假,则应用另一项检查。hasNextDouble
方法将文本解释为 double 并在匹配时返回 true。nextDouble()
方法从标准输出返回一个双精度值,并在控制台中打印相同的值,否则为下一次检查而移动。nextDouble()
方法在来自控制台的下一个标记与 Float Regex 不匹配时抛出 InputMismatchException
,当 Scanner 实例关闭时抛出 IllegalStateException
。
另一项检查是使用 hasNextBoolean
方法。此方法检查 boolean
值,真或假。如果返回值是布尔值 true,则使用 nextBoolean()
来获取控制台输入并将其打印到输出屏幕。否则,它继续使用三元运算符 else 部分。nextBoolean
方法在下一个标记没有找到布尔值时抛出 InputMismatchException
,当 Scanner 实例关闭时抛出 IllegalStateException
。
遵循相同的模式,使用 next
方法验证输入。该方法成为 while 输入检查部分的最后一个条件。该方法从控制台搜索并返回整个前面的文本。该功能可能会在等待输入扫描时阻止控制台输出。该方法始终返回一个字符串值。评估也将特殊字符视为字符串并在输出中打印。与其他方法一样抛出相同的异常。如果 Scanner 已关闭,则说 IllegalStateException
,或者在没有更多令牌可用时说 NoSuchElementException
。
下面是上述验证代码的输出块。
Enter any text:
--
The input text is String: --
67
The input text is int: 67
1234567890000000
The input text is long: 1234567890000000
true
The input text is boolean: true
FALSE
The input text is boolean: false
90.08939782639
The input text is double: 90.08939782639
hi
The input text is String: hi
quit
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,