嗯,让我们说这曾经工作得很好然后我今天再次启动它现在它没有......
引脚是1234,无论我做什么,它说它无效...
是的我知道它第三次没有检查。我也必须解决这个问题:
import java.util.Scanner;
import java.util.Scanner;
public class ATM
{
public ATM()
{
Scanner console = new Scanner(System.in);
final String pin = "1234";
String userPin = "";
int pinCount = 1;
boolean error = false;
do{
System.out.print("Enter PIN: ");
userPin = console.nextLine();
if (pinCount == 3) {
System.out.println("Bank account is blocked");
break;
}
else if (userPin.length() < 4 || userPin.length() > 4) {
error = true;
pinCount += 1;
}
else if (isNumeric(userPin) && userPin == pin && pinCount < 3) {
System.out.println("Your PIN is correct");
break;
}
else{
System.out.println("Your PIN is incorrect");
error = true;
pinCount += 1;
}
}while(error);
}
public static boolean isNumeric(String str)
{
try
{
double d = Double.parseDouble(str);
}
catch(NumberFormatException nfe)
{
return false;
}
return true;
}
}
不要问我为什么要拆分它:
public class ATMtest
{
public static void main(String[] args)
{
ATM atm = new ATM();
}
}
非常感谢任何帮助。
答案 0 :(得分:4)
您不会将String
个对象与==
进行比较。您应该使用equals()
方法。我知道如果你是java的新手是没有意义的,==
的意思是“它们是同一个引用吗?”而equals()
的意思是“他们是平等的吗?”。
答案 1 :(得分:2)
userPin == pin
应为userPin.equals(pin)
答案 2 :(得分:1)
对于精确4
长度使用\d{4}
regex
的数字匹配,并删除if else语句中的所有样板代码以进行验证。
public static boolean isNumeric(String str) {
Pattern p = Pattern.compile("\\d{4}");
Matcher matcher = p.matcher(str);
return matcher.matches();
}
对于字符串比较,使用equals
的{{1}}方法。从
==
要
else if (isNumeric(userPin) && userPin == pin && pinCount < 3) {
答案 3 :(得分:1)
在代码中声明两个String变量:
final String pin = "1234";
String userPin = "";
并验证它们是否相等。
else if (isNumeric(userPin) && userPin == pin && pinCount < 3) {
System.out.println("Your PIN is correct");
break;
}
字符串比较应使用equals方法而不是==
更改
userPin == pin
到
userPin.equals(pin)
答案 4 :(得分:0)
将其更改为
else if (isNumeric(userPin) && userPin == pin && pinCount < 3) {
System.out.println("Your PIN is correct");
break;
}
此
else if (isNumeric(userPin) && userPin.equals(pin) && pinCount < 3) {
System.out.println("Your PIN is correct");
break;
}
答案 5 :(得分:0)
switch
会不会在这里变得更好而不是所有那些条件?