gpt4 book ai didi

java - Java 中存在问题的decimalFormat.parse()

转载 作者:行者123 更新时间:2023-12-01 07:03:42 24 4
gpt4 key购买 nike

有一个要求,如果用户输入一个数字,解析它并doSomething()。如果用户输入数字和字符串的混合,则 doSomethingElse()

所以,我编写了如下代码:

String userInput = getWhatUserEntered();
try {
DecimalFormat decimalFormat = (DecimalFormat)
NumberFormat.getNumberInstance(<LocaleHere>);
Number number = decimalFormat.parse(userInput);
doSomething(number); // If I reach here, I will doSomething

return;
}
catch(Exception e) {
// Oh.. user has entered mixture of alpha and number
}

doSomethingElse(userInput); // If I reach here, I will doSomethingElse
return;

函数getWhatUserEntered()如下所示

String getWhatUserEntered()
{
return "1923";
//return "Oh God 1923";
//return "1923 Oh God";
}

但是,有一个问题。

  • 当用户输入1923时 --> doSomething() 被命中
  • 当用户输入Oh God 1923时 --> doSomethingElse() 被点击
  • 当用户输入 1923 Oh God --> doSomething() 被点击。这是错误这里我需要点击 doSomethingElse()

对于我想要实现的目标,是否有任何内置(更好)的功能?我的代码可以修改以满足需要吗?

最佳答案

由于特定的 DecimalFormat 实现,一切正常。 JavaDoc 说:

Parses text from the beginning of the given string to produce a number. The method may not use the entire text of the given string.

所以你必须将代码修复为如下所示:

  String userInput = getWhatUserEntered();
try {
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition position = new ParsePosition(0);
Number number = formatter.parse(userInput, position);
if (position.getIndex() != userInput.length())
throw new ParseException("failed to parse entire string: " + userInput, position.getIndex());
doSomething(number); // If I reach here, I will doSomething

return;
}
catch(Exception e) {
// Oh.. user has entered mixture of alpha and number
}

doSomethingElse(userInput); // If I reach here, I will doSomethingElse
return;

关于java - Java 中存在问题的decimalFormat.parse(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33210032/

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