无法获得比较一个字符串和另一个字符串中的字符的循环,并且 returns true

Can't get for loop that compares characters from one string to another and returns true

所以我得到了一个练习题,要求编写一个方法来比较 String verificationCode 和 String secretKey character buy character。 int claimValue 也必须匹配。如果字符匹配,它应该 return 为真,否则为假。

代码编译正常。但无论我 运行 进行什么测试,它总是 return 是错误的。有人可以指导我哪里出错了吗?

public boolean verifyWin(int claimValue, String verificationCode, String secretKey) {
    int prize = 0;
    for (int i = 1; i <= verificationCode.length(); i++) {
        if (verificationCode.charAt(i - 1) == secretKey.charAt(i - 1)) {
            prize = prize + 1;
        } else {
            prize = prize - 1;
        }
    }
    if (prize == claimValue) {
        return true;
    } else {
        return false;
    }
}

测试是:

 //Test (1):

Lottery winner = new Lottery();

winner.setVerificationCode("HHHHHH");
winner.setSecretKey("HHHHHH");
winner.setClaimValue(1);

winner.verifyWin(1 , "HHHHHH", "HHHHHH");

returns false

//Test 2

Lottery winner = new Lottery();

winner.setVerificationCode("HHHH44");
winner.setSecretKey("HHHH44");
winner.setClaimValue(1);

winner.verifyWin(1 , "HHHH44", "HHHHH44");

returns false

我需要确切地知道你在进行什么测试 运行,因为当我复制你的代码时,我会在我期望的时候得到 true,在我期望的时候得到 false,并且我得到了一个超出范围的索引当我期望使用您的代码时出错。

System.out.println(verifyWin(4, "test", "test")); // returns true
System.out.println(verifyWin(6, "test", "test")); // returns false
System.out.println(verifyWin(6, "test", "tester")); // returns false
System.out.println(verifyWin(6, "tester", "test")); // throws index out of bounds error

**编辑:我在您的测试用例 post 编辑后完成了这个 post,问题是您为 claimValue 分配的值。如果 claimValue 变量设置为您的字符串应包含的字符数,您的代码只会 return 为真。

winner.verifyWin(1 , "HHHHHH", "HHHHHH"); // returns false
winner.verifyWin(6 , "HHHHHH", "HHHHHH"); // returns true