【发布时间】:2016-02-16 10:25:28
【问题描述】:
我有这个简短的 sn-p 代码,我必须在其中检查一个字符串以查看它是否包含整数和可能的小数。该字符串是金额(12.34),所以它也不能超过第四个索引。
我的问题是有人告诉我使用charAt()(在我的代码中我使用了matches() 和contains(),这是错误的)来检查整数和小数,以便该例程返回一个布尔值,即如果字符串与这些参数一起使用,则为 true,但是我对如何将其转换为使用 charAt() 而不是 matches() 和 contains() 感到困惑。
同样,如果我的格式有误,或者措辞有误,或者代码看起来很糟糕,我很抱歉,我正在上 Java 的第一个学期,这是我上过的第一堂编程课,所以我我有点粗糙。
import java.util.Scanner;
public class Auction
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
String price;
String quantity;
System.out.print("How much money are you willing to bet on this item?: $");
price = keyboard.next();
if(price.matches("[0-9]*") && price.length() <= 5)
{
Float f = Float.parseFloat(price);
System.out.printf("$%5.2f", f);
System.out.println();
}
else if(price.matches("[0-9]*") && price.length() <= 5 && price.contains("."))
{
Float f = Float.parseFloat(price);
System.out.printf("$%5.2f", f);
System.out.println();
}
else
{
System.out.println("Invalid input");
}
System.out.print("What quantity do you want to bid on?: ");
quantity = keyboard.next();
if(quantity.contains("."))
{
System.out.println("Invalid input");
}
}
}
【问题讨论】:
-
你也许应该把它分成
array = price.split(".")并检查array[1].length == 2是否如此你就知道它是有效的。 -
对 charAt 有要求还是只是一个建议?我还有很多其他方法可以做到这一点,只是想知道这些字符是否是课程的一部分......
-
“不能越过第四个索引”是什么意思?你的意思是小数点后最多可以有4位数字? --- 因为你没有提到它,所以假设 value 不能是负数是否正确?
-
查看您的代码,您似乎允许
0和99999之间的数字,但也允许.0000到.9999,以及介于两者之间的任何数字,例如9.999、99.99和9.999。这似乎不对。是你想要的吗?或者您的意思是说一个介于0和99.99之间的数字,小数点后最多两位数? -
如果任何解决方案有效,您能发表评论吗?
标签: java string if-statement charat