Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使参数正确,代码也会跳过if语句_Java_String_If Statement - Fatal编程技术网

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

Java 即使参数正确,代码也会跳过if语句,java,string,if-statement,Java,String,If Statement,此代码应该以“$(金额)”的格式接收客户的输入。if语句用于检查字符串payment中的第一个字符是否等于“$”,但这不会抵消它一直作为无效付款读取的if语句 double money = 0; String payment = input.next(); String $ = "$"; String test = payment.substring(0); if (test.equals($)) { System.out.println("You entered " + payment);

此代码应该以“$(金额)”的格式接收客户的输入。if语句用于检查字符串payment中的第一个字符是否等于“$”,但这不会抵消它一直作为无效付款读取的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();
}
double money=0;
字符串payment=input.next();
字符串$=“$”;
字符串测试=payment.substring(0);
if(test.equals($)){
System.out.println(“您输入”+付款);
payment=payment.substring(1,payment.length()-1);
金钱=双倍。双倍(付款);
如果(货币<金额){
System.out.println(“钱不够,系统终止”);
系统出口(0);
}
系统输出打印(付款);
}
否则{
System.out.println(“无效硬币或纸币。请重试”);
付款=输入。下一步();
}
付款。子字符串(0)
返回整个字符串,您要将
“$”
付款。子字符串(0,1)
进行比较,或者将
付款.charAt(0)
'$”
进行比较

因此,要么:

String test = payment.substring(0,1);
if (test.equals($)) {

会有用的

另一个选择是:

if (payment.startsWith ($)) {

不建议使用子字符串来匹配字符

if(payment.charAt(0)=='$')
或者使用正则表达式

 Pattern p=Pattern.compile("$.*");

 Matcher m=p.matcher(payment);

 if (m.matches()==true) {
     /*Do operation*/
 }

你认为子串(0)是什么是什么?如果您想获取第一个字符,只需使用
If(payment.charAt(0)='$')
…不建议命名变量
$
。从java文档中添加到@MarounMaroun:
美元字符应仅用于机械生成的源代码中,或者很少使用,访问旧系统上预先存在的名称。
 Pattern p=Pattern.compile("$.*");

 Matcher m=p.matcher(payment);

 if (m.matches()==true) {
     /*Do operation*/
 }