【问题标题】:How to not discard 0's at the beginning of a number that is parsed via Integer.parseInt如何在通过 Integer.parseInt 解析的数字的开头不丢弃 0
【发布时间】:2014-03-15 00:34:59
【问题描述】:

所以我基本上有一个数据库,它存储在我使用 JDBC 驱动程序连接到的服务器上。我有一个 GUI,您基本上可以在其中遍历数据库中的每条记录,添加/删除/修改数据。我有一份客户记录清单,他们有一个护照号码。问题是如果这些数字以 0 开头,当我搜索护照号码以查看表格上的记录时,它不会显示。但是,当我搜索具有 891029380 等护照号码的客户时,就会显示。当我创建一个客户并通过 GUI 指定他们的护照号码时,完整的护照号码将存储在数据库中,它将记录以 0 开头的护照号码。是否有可能覆盖 Integer.parseInt 方法,当在 JTextField 中指定护照号码以搜索特定客户时。它将显示与该数字(以 0 开头的数字)相关的客户详细信息,而不是不显示。

【问题讨论】:

  • 如果是文本字符串,为什么要把它解析为int?只需将其读取为字符串即可。也许如果您向我们展示一些代码,我们可以为您提供更多帮助。
  • 原因是因为我想通过多种方式搜索,问题是如果我把它变成一个字符串,那么我会得到一个 NumberFormatException 错误,因为搜索和编辑客户详细信息完全取决于那个文本字段。
  • 如果数据库中的值以零开头,我将假设您的列是某种类型的 varchar 或类似的。这就是数据在代码中的表示方式。
  • 对不起,我还是不明白。如果文本前面的 0 很重要,那么这不是一个数字(因为如果处理数字,则 001 = 1)并且没有办法让 Integer.parseInt() 用不同的语义解析它。向我们展示一些代码(您在其中解析然后使用字段内容)。

标签: java mysql user-interface integer


【解决方案1】:

您应该将护照视为字符串,尤其是因为您没有对它们执行操作。要确保文本字段包含数字,您可以使用正则表达式:

String text = textField.getText();
boolean isANumber = text.matches("[0-9]*");

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-05-12
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 2019-12-27
相关资源
最近更新 更多