gpt4 book ai didi

用于检查基本类型的 Java 异常处理

转载 作者:行者123 更新时间:2023-12-02 05:19:57 25 4
gpt4 key购买 nike

我有一个模拟加油站的 GUI 程序。

程序中有3个输入字段:

  • 项目名称
  • 单位数量(或体积,以 L 为单位)
  • 以及以便士为单位的金额(每单位或升)。

然后您可以选择按体积或按单位添加项目。这个想法是你可以用最少的输入框购买燃料和其他元素(例如食物)。

我正在使用异常处理来检查输入是否是我想要的:

  • 要按单位相加的 int
  • 和一个按体积添加的double值。

到目前为止,我的代码识别出在需要整数的位置输入了 double 值,并抛出错误。

例如,输入:商品名称:巧克力,数量(或升):2.5,价格:85 会出现错误:使用的代码如下所示

if (e.getSource () == AddByNumOfUnits) {
try {
Integer.parseInt(NumOfUnitsField.getText());
} catch (NumberFormatException exception) {
SetErrorField("Input must be the appropriate type (real number for volume, integer for units)");
}

但是,当按体积添加时,我无法让程序只接受 double 值或任何使用小数点的值。 int 可以作为 double 值传入并接受,这是我不想要的。我使用的代码非常相似:

if (e.getSource() == AddByVolume) {
try {
double itemVolume = Double.parseDouble(NumOfUnitsField.getText());
} catch (NumberFormatException exception) {
SetErrorField("Input must be the appropriate type (real number for volume, integer for units)");
}

如果有人能给我指出解决这个问题的正确方向,那就太好了。

谢谢

最佳答案

试试这个。它检查该号码是否包含 . char 使其成为 double

try {
if(!NumOfUnitsField.getText().contains(".")){
throw new NumberFormatException("Not a double");
}
double itemVolume = Double.parseDouble(NumOfUnitsField.getText());
} catch (NumberFormatException exception) {
SetErrorField("Input must be the appropriate type (real number for volume, integer for units)");
}

编辑:结合代码框答案,解决方案是

try {
Pattern p = Pattern.compile("\\d+\\.\\d+");
if(!p.matcher(NumOfUnitsField.getText()).matches()){
throw new NumberFormatException("Not a double");
}
double itemVolume = Double.parseDouble(NumOfUnitsField.getText());
} catch (NumberFormatException exception) {
SetErrorField("Input must be the appropriate type (real number for volume, integer for units)");
}

关于用于检查基本类型的 Java 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26587698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com