java中的.equals()不起作用?

时间:2015-09-20 20:49:23

标签: java

java dosent中的

.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;
    }   
}
}

1 个答案:

答案 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语句。