我是编程新手,需要一些帮助。我需要编写一个简单的程序来验证ATM用户的密码。程序将接受引脚并退出,告诉用户它是一个不正确的引脚并让他们再次尝试三次,或告诉用户他们的卡被锁定,因为他们错了三次。我现在搜索了一个多小时,找不到这个例子。我知道我需要使用扫描仪和循环来实现这一点但不是很多。任何帮助都会受到赞赏,因为它将在午夜之前到期......
答案 0 :(得分:1)
for i = 1..3
prompt user for pin
read pin
check pin
if pin is correct, exit
tell user they were wrong and try again
tell user they got it incorrect three times and their card is locked.
我会给出一个可以帮助一些新手的提示。引脚是整数,对吧?所以你可能想用Scanner.nextInt()
来获取输入 - 不要这样做!只需获取下一行并比较字符串(您可能必须使用String.trim()
来删除空格)。如果您尝试使用Scanner.nextInt()
会更复杂(如果用户输入的内容无法解析为整数,那该怎么办)。
答案 1 :(得分:0)
import java.util.Arrays;
import java.io.Console;
public class atm {
public static void main(String[] args) {
int counter = 3;
int attempt = 3;
char[] ch = null;
Console c=System.console();
System.out.println("Enter PIN: ");
ch=c.readPassword();
String pass=String.valueOf(ch);
if(pass.equals("enigma")){
System.out.println("Correct PIN entered!");
}
while(!pass.equals("enigma") && attempt != 0){
System.out.println("Invalid PIN entered!. " + --attempt + " attempts remaining.");
counter--;
if(attempt != 0){
c=System.console();
System.out.println("Enter PIN: ");
ch=c.readPassword();
pass=String.valueOf(ch);
if(pass.equals("enigma")){
System.out.println("Correct PIN entered!");
}
}
else{
System.out.println("your card has locked!");
break;
}
}
}
}
请注意,您可以使用PIN码代替“ enigma”字符串,希望对您有所帮助。
答案 2 :(得分:-1)
这里是@Jared上面回答的伪代码的实现
boolean cardLockFlag = false ;
String password;
Scanner scan = new Scanner (System.in);
password = "password" ;
if(!cardLockFlag){
for(int i = 0 ; i < 3 ; i++){
if(password.equals(scan.next().trim())){
System.out.println("Success :) ");
break ;
}else{
if(i==2){
cardLockFlag = true ;
}else{
System.out.println("Wrong Password");
}
}
}
}else{
System.out.println("Card is Locked");
}