此代码应以此格式“$(金额)”接受客户的输入。 if语句用于检查字符串支付中的第一个字符是否等于'$',但是这并不会将它保持读取的if语句设置为无效支付。
double money = 0;
String payment = input.next();
String $ = "$";
String test = payment.substring(0);
if (test.equals($)) {
System.out.println("You entered " + payment);
payment = payment.substring(1, payment.length() - 1);
money = Double.parseDouble(payment);
if ( money < sum ) {
System.out.println("Not enough money. System terminating.");
System.exit(0);
}
System.out.println(payment);
}
else {
System.out.println("Invalid coin or note. Try again.");
payment = input.next();
}
答案 0 :(得分:1)
payment.substring(0)
返回整个字符串,您要将"$"
与payment.substring(0,1)
进行比较,或将payment.charAt(0)
与'$'
进行比较。
所以:
String test = payment.substring(0,1);
if (test.equals($)) {
或
if (payment.charAt(0) == '$') {
会奏效。
另一种选择是:
if (payment.startsWith ($)) {
答案 1 :(得分:0)
不建议使用子字符串匹配字符。
if(payment.charAt(0)=='$')
或使用正则表达式
Pattern p=Pattern.compile("$.*");
Matcher m=p.matcher(payment);
if (m.matches()==true) {
/*Do operation*/
}