首页 > 解决方案 > 有没有办法在 Java Scanner 中接受多种数据类型?

问题描述

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

标签: javajava.util.scanner

解决方案


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

https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Scanner.html#next(java.util.regex.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 );
     }
  }

推荐阅读