我有这个简短的代码片段,我必须检查一个字符串,看它是否包含整数和可能的小数。该字符串是一笔金额(12.34)
,因此它不能超过第四个索引。
我的问题是,我被告知要使用charAt()
(在我的代码中我使用matches()
和contains()
这是错误的)来检查整数和小数,以便如果字符串与这些参数一起使用,此例程将返回一个布尔值,但是我对如何将其转换为使用charAt()
而不是matches()
和{{1}感到困惑。 }。
同样,我很抱歉,如果我把这个错误格式化,或说错了,或者代码看起来很糟糕,我在我的第一个学期Java,这是我的第一个编程我曾经参加过I级课程,所以我有点粗糙。
contains()
答案 0 :(得分:0)
这样怎么样?
import java.util.Scanner;
公共类拍卖{
private static final String numberRegex = "^\\d*(\\.\\d+)?$";
private static final String integerNumber = "^\\d*$";
private static final int MAX_LENGTH = 5;
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.length() <= MAX_LENGTH && price.matches(numberRegex)) {
Float f = Float.parseFloat(price);
System.out.printf("$%5.2f\n", f);
} else {
System.out.println("Invalid input");
return;
}
System.out.print("What quantity do you want to bid on?: ");
quantity = keyboard.next();
if (!quantity.matches(integerNumber)) {
System.out.println("Invalid input");
}
}
}
答案 1 :(得分:0)
我正在通过手机输入。请原谅我的错误。您的教授是否曾要求您使用charAt而不是正则表达式和匹配?
if (inpString!= null && !inpString.isEmpty () && inpString.length() <= 5){
int periodCount = 0;
for (int i=0; i < inpString.length (); i++){
char c = inpString.charAt (i);
if (c == '.'){
periodCount++;
}else if (c >= '0' && c <= '9'){
}else {
System.out.println("invalid output");
break;
}
if(periodCount > 1){
System.out.println("too may periods. Invalid output");
break;
}
}
}else {
System.out.println ("invalid input");
}
如果您需要检查没有千位数字,即1.234,您能评论一下吗?如果是,请确保
inpString.substring
(inpString.lastIndexOf
(".")).length < 3
使用所有null和indexOutOfBounds检查