即使参数正确,代码也会跳过if语句

时间:2015-04-26 10:32:39

标签: java string if-statement

此代码应以此格式“$(金额)”接受客户的输入。 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();
}

2 个答案:

答案 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*/
 }