【问题标题】:How to check the type of a value in Java? [duplicate]如何检查Java中值的类型? [复制]
【发布时间】:2013-12-25 14:36:45
【问题描述】:

我正在制作一个程序,我希望用户将值输入到变量中。输入后我想检查值类型,但我不知道如何。有点像这样:

import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
int num1;
num1 = scanner.nextInt();

我想要某种方法来检查 num1 的类型,这样我就可以确保用户输入了一个可用的值,即确保他们没有输入诸如 "qwerty" 之类的字符串到整数变量中,这样我就可以继续捕获错误,而不是最终得到 java.util.InputMismatchException。我试过了:

if(num1 instanceof java.lang.String)

但它不能修复错误,也不适用于整数。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 显然声明为int 的值不是String。您正在向后考虑:everything 以字符串形式出现。你正在扫描一个 int;如果你得到异常,它不是一个 int。如果你这样做,那就是检查。
  • 这个post 应该会有所帮助

标签: java variables input integer


【解决方案1】:
public boolean isInteger( String input ) {

  try {
    Integer.parseInt( input );
    return true;
   }
    catch( Exception e ) {
    return false;
   }
}

像其他人提到的那样做,并使用scanner.next() 来检索字符串。之后你可以使用上面的代码 sn-p 来检查一个字符串是否是一个整数。

对于双倍来说,它看起来非常相似:

boolean isDouble(String str) {

try {
    Double.parseDouble(str);
    return true;
  } catch (NumberFormatException e) {
    return false;
  }
}

【讨论】:

    【解决方案2】:

    Java 是一种静态类型语言,因此 scanner.nextInt(); 将始终返回 int。

    如果您希望返回类型为字符串,请调用scanner.next()

    【讨论】:

    • 补充:您可以使用Integer.parseInt() 来检查它是否可以表示为整数。您可以对想要检查的每种类型执行此操作,但您仍然可以使用例外情况。
    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 2012-09-13
    • 2012-01-12
    • 2021-03-04
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多