【问题标题】:Can't get for loop that compares characters from one string to another and returns true无法获取将一个字符串中的字符与另一个字符串进行比较并返回 true 的 for 循环
【发布时间】:2019-11-26 19:38:33
【问题描述】:

所以我得到了一个练习题,要求编写一个方法,将字符串验证码与字符串 secretKey 字符购买字符进行比较。 int claimValue 也必须匹配。如果字符匹配,则返回 true,否则返回 false。

代码编译良好。但无论我运行什么测试,它总是返回 false。有人可以指导我哪里出错了吗?

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

【问题讨论】:

  • “但无论我运行什么测试”,请展示其中的一些测试。
  • edit 而不是在 cmets 中添加代码。
  • 但是你为什么期望它返回 true?有 6 个相等的字符,所以奖品是 6,而不是 1。
  • 当我创建一个对象并使用该方法将 int 和 String 参数的参数设置为相同的字符时,它们总是返回 false。我试图弄清楚如何让它们都进行比较并返回 true。
  • 您的代码没有显示创建对象并使用该方法设置参数。请edit 显示您在做什么。您已删除评论的内容很好,但应该已将其编辑到问题中以使其可读。

标签: java string for-loop increment charat


【解决方案1】:

我需要确切知道您正在运行哪些测试,因为当我复制您的代码时,我会在预期的时候得到正确的结果,在预期的时候得到错误的结果,并且在预期的时候得到索引越界错误你的代码。

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

**编辑:我在您发布测试用例后完成了这篇文章,问题是您为您的 claimValue 分配的值。只有在 claimValue 变量设置为字符串应有的字符数时,您的代码才会返回 true。

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

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多