.equals()
有效吗?我的程序存在问题,由于某些原因,在while
循环部分,即使String a = answer[r]
import java.util.Scanner;
public class security {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
String q1[] = {"mother midd name","Father name","your pit name","First school name"};
String a[] = {"Zakia","Mohamed","Dog","Kaliop"};
AskQ(q1,a);
}
public static void AskQ(String q[],String answers[]) {
int r = (int) (Math.random() * q.length) + 1;
for (int i = 0; i < answers.length; i++) {
int c = 1;
System.out.print("please enter your " + q[r] + "?");
String a = sc.nextLine();
do {
c++;
System.out.print("Wrong! try again:");
a = sc.nextLine();
if(c == 2){
System.out.print("only one attempt lift! enter your pass:");
a = sc.nextLine();
c++;
}
if(c == 3){
System.exit(0);
}
c++;
} while (!a.equals(answers[r]));
System.out.println("you are in");
break;
}
}
}
答案 0 :(得分:2)
从我所看到的,你的代码首先在for循环中将c设置为等于1,然后请求问题的答案,然后进入do-while循环。在do-while循环内部,它将c递增到2,然后接受另一个问题的答案,然后检查c是否等于2.因为c等于2它要求另一个问题的aswer然后它递增c到3.最后,它检查c是否等于3(它是)并退出程序。
我建议在do-while循环上使用while循环,因为在你进行任何检查和错误处理之前,你想要检查用户是否输入了正确的答案。如果使用do-while循环,则在进行错误处理之前,它甚至会检查用户是否输入了正确的答案。
更重要的是,我建议使用你的第二个if语句作为else-if语句。