【问题标题】:nested if-statement not functioning properly [closed]嵌套的 if 语句无法正常运行 [关闭]
【发布时间】:2021-02-20 04:24:45
【问题描述】:

我是从一个检查信用卡验证的程序中获取的。下面的代码放在另一个 if 语句中。尽管该语句为真,但它仍然输出为假。 validationlastDigit 都是整数。

这是我的代码:

if (validation == lastDigit){
 System.out.println("Check digit should be: " + validation);
 System.out.println("Check digit is: " + lastDigit);
 System.out.println("Number is valid.");
 System.out.println();
}
else {
 System.out.println("Check digit should be: " + validation);
 System.out.println("Check digit is: " + lastDigit);
 System.out.println("Number is not valid.");
 System.out.println();
 }

这是我的输出:

Enter a credit card number (enter a blank line to quit): 5457623898234113
Check digit should be: 3
Check digit is: 3
Number is not valid.

Enter a credit card number (enter a blank line to quit): 5555555555554445
Check digit should be: 4
Check digit is: 5
Number is not valid.

Enter a credit card number (enter a blank line to quit): 4012888888881881
Check digit should be: 1
Check digit is: 1
Number is not valid.

Enter a credit card number (enter a blank line to quit): 

即使验证和lastDigit 确实彼此相等,就像第一个和第三个输入一样,它仍然执行为假。

我错过了什么吗?

【问题讨论】:

  • 你应该提到更多代码,其中还提到了 lastDigit 和验证的数据类型
  • 请附上minimal reproducible example。如果不太长,这可能是您的全部代码。

标签: java if-statement nested-if


【解决方案1】:

由于数据类型是整数,您应该使用 'equals()' 方法比较两个值。

if (validation.equals(lastDigit))

== 比较引用,即它检查验证和 lastDigit 是否都指向同一个对象。 Equals 方法检查两个对象的值是否相同。

【讨论】:

  • 这不起作用,因为它给了我一条消息,指出“无法在原始类型 int 上调用 equals(char)”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
相关资源
最近更新 更多