【问题标题】:In Java, how do I determine if an input value is an integer and then also store the value without having to ask again?在 Java 中,如何确定输入值是否为整数,然后再存储该值而无需再次询问?
【发布时间】:2016-04-19 13:06:14
【问题描述】:

我目前正在开发一个在某一点接受整数值的程序(使用 Scanner 方法 nextInt)。当然,如果你输入“one”而不是“1”,程序就会崩溃。我试图让它只是说它是一个无效的输入,如果它不是一个整数再试一次,如果值是一个整数则继续。到目前为止,我使用的是 Scanner 方法 hasNextInt,它确定该值是否为整数并返回一个布尔值,但如果输入了整数值,我遇到的问题是继续。那么是否可以继续使用输入的值继续程序而无需再次请求呢?

【问题讨论】:

  • 请分享示例输入和输出。
  • 请发布您的代码...
  • 我会用 nextLine 读取一个字符串,然后在 while 循环内尝试 catch 到 parseInt,但你能显示你的代码吗?问题文本下方有一个“编辑”链接。
  • 读取字符串,解析为int,捕获异常。
  • 为什么if (scanner.hasNextInt()) { i = scanner.nextInt();}不适用于您的案例?

标签: java runtime-error java.util.scanner


【解决方案1】:

既然你用的是java.util.Scanner,那就有个方法

scanner.hasNextInt();

检查是否有整数输入。

int value = 0;

if(scanner.hasNextInt()) {
    value = scanner.nextInt();
} else {
    // handle bad input
}

【讨论】:

    【解决方案2】:

    你可以试试:

    ...
    
    Scanner in = new Scanner(System.in);
    
    try {
    
      String intS = in.nextLine();
      int intI = Integer.parseInt(intS);
    
    } catch (Exception e) {
    
       System.out.println("Error, no Int!")
       //or something
    
    }
    
    ...
    

    【讨论】:

      【解决方案3】:
      if (x == (int)x)
      {
         // Number is integer
      }
      

      也尝试一下

      Object x = someApi();
      
      if (x instanceof Integer) 
      

      How can I check if a value is of type Integer?How to check if the value is integer in java?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-15
        • 1970-01-01
        • 2015-09-13
        • 2021-06-11
        相关资源
        最近更新 更多