【问题标题】:How to check if a string is a valid integer? [duplicate]如何检查字符串是否为有效整数? [复制]
【发布时间】:2023-03-30 00:18:01
【问题描述】:

我有:

 op1 = Integer.parseInt(jTextField1.getText());
 op2 = Integer.parseInt(jTextField2.getText());

但是,我想首先检查文本字段的值是否可以分配给整数变量。我该怎么做?

我已经经历了很长时间,所以,如果这里已经问过了,请原谅我

【问题讨论】:

  • if (op1 == 0)?我不确定你在问什么。
  • 这就是为什么我说这很难解释。我想检查是否可以为变量赋值
  • 等等,你是说if((int i = 0) == true)是有效的C代码?!
  • 如果它不是一个有效的整数,你会得到一个异常。如果你没有得到异常,你可以分配它。
  • 您好@user3314478,欢迎来到 Stack Overflow。我根据您对其中一个答案的评论编辑了您的问题。如果我的编辑改变了您的问题的意图,请随时edit 进一步,或进入revision history 并回滚编辑。但是请注意,就目前而言,这个问题很可能会作为网站上其他问题的副本而被关闭。

标签: java variable-assignment


【解决方案1】:

您不能执行if (int i = 0),因为赋值返回分配的值(在本例中为0),而if 需要一个计算结果为truefalse 的表达式。

另一方面,如果您的目标是检查jTextField.getText() 是否返回一个可以解析为int 的数值,您可以尝试进行解析,如果该值不合适,@987654328 @ 将被提出,让您知道。

try {
    op1 = Integer.parseInt(jTextField1.getText());
} catch (NumberFormatException e) {
    System.out.println("Wrong number");
    op1 = 0;
}

【讨论】:

  • 不鼓励使用异常作为分支机制。如果输入可能格式错误,则应执行明确的有效性检查,而不是捕获异常。
  • 错字:NumericFormatException 应该是NumberFormatException
【解决方案2】:

这对我有用。只是为了识别一个字符串是一个基元还是一个数字。

private boolean isPrimitive(String value){
        boolean status=true;
        if(value.length()<1)
            return false;
        for(int i = 0;i<value.length();i++){
            char c=value.charAt(i);
            if(Character.isDigit(c) || c=='.'){
                
            }else{
                status=false;
                break;
            }
        }
        return status;
    }

【讨论】:

    【解决方案3】:

    如果 parseInt 无法将 String 转换为 int,则抛出 NumberFormatException。所以你应该用 try catch 块包围 parseInt 调用并捕获该异常。

    【讨论】:

      【解决方案4】:

      基本上,您必须决定检查给定字符串是否是有效整数,或者您只是假设给定字符串是有效整数并且在解析时可能会发生异常。

      【讨论】:

      • 我要检查字符串是否为有效整数
      • 那请自行搜索SO,这个话题和Java一样古老。
      • 你本可以回答这个问题而不是抱怨.-.
      • 在论坛中提问的一部分是在思考问题背后的抽象问题——如果您无法在搜索框中输入“java check string integer”,对不起。
      猜你喜欢
      • 2021-10-03
      • 2012-12-21
      • 2021-01-03
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 2016-10-23
      • 1970-01-01
      相关资源
      最近更新 更多