java如何检查双精度值是否包含特殊字符
我在为一个程序编写代码,在这个程序中,用户输入2到4个数字,最长可达2位小数。但是,在用户输入这些数字之前,他们必须输入英镑符号,例如#12.34。我想知道如何检查输入的双精度值是否以磅符号开头,如果用户忘记输入,如何重新提示他们再次输入。到目前为止,我使用的是字符串值和'。startsWith()的代码,但我后来发现字符串值使程序的其余部分无法进行编码,所以我想将其保留为双精度值。这是我目前拥有的代码,但我希望更改为双代码:
String input;
System.out.print("Enter the 4 numbers with a pound key: ");
input = keyboard.next();
while (!input.startsWith("#")) {
System.out.print("Re-enter the 4 numbers with a pound key: ");
input = keyboard.next();
}
如前所述,我想用double替换字符串
# 1 楼答案
你应该使用
startsWith
方法。我不知道你为什么这么说基本上,您希望反复提示它,直到用户输入#符号。那么为什么不使用while循环呢
这是很多代码
说明:
首先,它提示用户输入一个数字并将输入存储在
s
。这很容易理解。现在困难的部分来了。我们希望循环,直到用户输入正确格式的输入。让我们看看有哪些类型的无效输入:第一个由
startsWith
方法处理。如果输入不是以#开头,请再次询问用户。在此之前,首先调用trim
来删除输入中的空白,以便像" #5.90"
这样的输入是有效的。第二部分由本部分处理:如果输入的格式错误,请再次询问用户。如果用户输入长度小于1的字符串,请再次询问用户
“但是等等!为什么要调用
substring
方法?”你问。如果用户在前面输入一个#,然后输入正确的数字格式,您将如何将该字符串转换为双精度?在这里,我只是通过调用substring来修剪第一个字符# 2 楼答案
对于程序的其余部分,请使用
value
。我认为现在应该可以进行编码了# 3 楼答案
您可以尝试这样做,删除所有不是数字或点的字符:
# 4 楼答案
double
值没有货币符号。您应该在执行操作时检查货币符号,并在解析double之前将其删除