无法获得比较一个字符串和另一个字符串中的字符的循环,并且 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
所以我得到了一个练习题,要求编写一个方法来比较 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