【发布时间】:2013-06-06 22:52:48
【问题描述】:
我知道如何检查字符串是否为数字。但是如何检查字符串是否为数字且字符串是否为科学计数法?
这是我尝试过的:我编写了一个算法来简单地检查字符串是否包含“E”,但我不确定这是否足够。
我正在寻找这样的方法实现:
public boolean isScientificNotation(String numberString) {
//show me the implementation
}
【问题讨论】:
我知道如何检查字符串是否为数字。但是如何检查字符串是否为数字且字符串是否为科学计数法?
这是我尝试过的:我编写了一个算法来简单地检查字符串是否包含“E”,但我不确定这是否足够。
我正在寻找这样的方法实现:
public boolean isScientificNotation(String numberString) {
//show me the implementation
}
【问题讨论】:
您可以使用BigDecimal。符号格式本身的验证是使用简单的contains 表达式完成的
static boolean isScientificNotation(String numberString) {
// Validate number
try {
new BigDecimal(numberString);
} catch (NumberFormatException e) {
return false;
}
// Check for scientific notation
return numberString.toUpperCase().contains("E");
}
【讨论】:
试试这个:
if(containsE(str)) //call your method to check if "e" is present
{
try
{
Double.parseDouble(str);
return true;
}
catch(NumberFormatException e)
{
return false;
}
}
else
return false;
【讨论】:
containsE 的含义是什么?你在做str.contains("E");吗?我有点担心,因为您在评论中写信检查“e”。我的测试总是显示大写的 E 是有效的。
containsE(str) 时,我指的是你说你在问题中写的算法。
toUpperCase(),然后检查E。
if (!containsE(str)) return false;
containsE 的实现。我知道这是微不足道的,但如果你告诉我那个 impl 并且它是正确的,我会把你的标记为答案。
private boolean isScientificNotation(String numberString) {
// Validate number
try {
new BigDecimal(numberString);
} catch (NumberFormatException e) {
return false;
}
// Check for scientific notation
return numberString.toUpperCase().contains("E") && (numberString.charAt(1)=='.' || numberString.charAt(2)=='.');
}
稍作修改。如果字符串是规范化的科学记数法,它应该有一个点/“。”排在第二位,并且在某个地方也有 E/e。
【讨论】: