有没有办法将多种数据类型接受到 Java 扫描器中?

Is there a way to accept multiple data types into a Java Scanner?

我试图在 java 中设计代码以接受出现的任何数据类型。例如,如果我问用户一个问题,无论他们输入的是字符串、双精度数还是整数,都将被接受并输入到变量中。我知道我可以在 python 中执行此操作,因为您不必预先定义变量的数据类型。在 Java 中有什么方法可以做到这一点?

您可以使用 Scanner.next(Pattern) 方法来测试您的输入是否与特定内容匹配。

https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Scanner.html#next(java.util.regex.Pattern)

您也可以使用 if 语句调用 hasNextX() 来测试输入是否匹配某种类型。这是我不久前在研究另一个 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 );
     }
  }