java - 有没有办法在 Java Scanner 中接受多种数据类型?
问题描述
我正在尝试在 java 中设计代码以接受出现的任何数据类型。例如,如果我问用户一个问题,无论他们输入的是字符串、双精度还是整数,都将被接受并输入到变量中。我知道我可以在 python 中做到这一点,因为您不必预先定义变量的数据类型。有没有办法在Java中做到这一点?
解决方案
您可以使用该Scanner.next(Pattern)
方法来测试您的输入是否与特定内容匹配。
您也可以只调用hasNextX()
withif
语句来测试输入是否匹配某种类型。这是我不久前在研究另一个 SO 问题时编写的一个简单测试。此代码使用扫描仪来测试输入是字符串还是双精度,并进行适当的解析。
String test = " test test < 1.234 2.234 3.456 > more ";
Scanner scan = new Scanner( test );
while( scan.hasNext() ) {
if( scan.hasNextDouble() ) {
double i = scan.nextDouble();
System.out.println( "Double: " + i );
}
else {
String s = scan.next();
System.out.println( "String: " + s );
}
}
推荐阅读
- python - 寻找最短路径时的最大递归深度超出错误
- python - 当我运行以下代码将 pdf 图像转换为 jpg 策略错误弹出
- sql - HeidiSQL 不允许我创建外键,我该怎么办?
- javascript - 未找到适用于 Android TV 的 TVEventHandler
- user-interface - 当应用程序进入后台时,如何在 Flutter 应用程序中关闭任何打开的对话框
- c# - 在 MSBuild 属性中使用数学运算符
- c++ - 如何实现socket readAll
- jquery - 不按比例缩放背景 SVG 并重复?
- zsh - 如何正确定义这个 Zsh 函数
- python-3.x - Lxml 树在给出时将 xpath 表达式作为字符串返回,如下例所示