繁体   English   中英

Java 中的密码锁分配

[英]Combination Lock assignment in Java

我有一个作业,其中有一个密码锁盒,其中有一个 4 个字母的单词作为密码,玩家必须尝试通过一次猜一个字母来猜测密码。 对于每一轮,应该输出一条线索来显示一个人的猜测与实际单词的接近程度。 如果猜中的字母也在密码锁中的同一个position中,则输出匹配的字母。 如果字母在单词中但不在同一个position中,则输出+ ,当单词中完全不存在字母时,输出* 所有这些字符都添加到单个字符串中以显示结果。

我尝试在 Java 中编写所有这些代码,但它返回的结果不正确,前面有null 有人可以帮我解决这些问题吗?

public class CombinationLock
{
    private String lock;
    private String guess;
    private String guessLetter1;
    private String guessLetter2;
    private String guessLetter3;
    private String guessLetter4;
    private String lockLetter1;
    private String lockLetter2;
    private String lockLetter3;
    private String lockLetter4;
    private String modifiedGuess;
    private char combinationLetter;
    private char guessLetter;

    public CombinationLock(String newLock)
    {
        lock = newLock;
    }

    public String getClue(String newGuess)
    {
        guess = newGuess;
        for(int i = 0; i < lock.length(); i++)
        {
            combinationLetter = lock.charAt(i);
            guessLetter = guess.charAt(i);

            if(i == 0)
            {
                lockLetter1 += combinationLetter;
                guessLetter1 += guessLetter;
            }
            else if(i == 1)
            {
                lockLetter2 += combinationLetter;
                guessLetter2 += guessLetter;                
            }
            else if(i == 2)
            {
                lockLetter3 += combinationLetter;
                guessLetter3 += guessLetter;                
            }
            else if(i == 3)
            {
                lockLetter4 += combinationLetter;
                guessLetter4 += guessLetter;                
            }           

            if(combinationLetter == guessLetter)
            {
                modifiedGuess += combinationLetter;
            }
            else if(guessLetter1 == lockLetter1 || guessLetter1 == lockLetter2 || guessLetter1 == lockLetter3 || guessLetter1 == lockLetter4)
            {
                modifiedGuess += '+';
            }
            else if(guessLetter2 == lockLetter1 || guessLetter2 == lockLetter2 || guessLetter2 == lockLetter3 || guessLetter2 == lockLetter4)
            {
                modifiedGuess += '+';
            }
            else if(guessLetter3 == lockLetter1 || guessLetter3 == lockLetter2 || guessLetter3 == lockLetter3 || guessLetter3 == lockLetter4)
            {
                modifiedGuess += '+';
            }
            else if(guessLetter4 == lockLetter1 || guessLetter4 == lockLetter2 || guessLetter4 == lockLetter3 || guessLetter4 == lockLetter4)
            {
                modifiedGuess += '+';
            }
            else
            {
                modifiedGuess += '*';
            }
        }
        return modifiedGuess;
    }
}

public class MyProgram extends ConsoleProgram
{
    public void run()
    {
        CombinationLock c1 = new CombinationLock("bird");
        System.out.println(c1.getClue("barn"));
    }
}


您需要初始化您的 modifiedGuess 变量,即

    public CombinationLock(String newLock)
    {
        lock = newLock;
        modifiedGuess = "";
    }

或者,您可以查看 StringUtils.difference function 可能会给您类似的结果(如果允许分配)。

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#difference(java.lang.String,%20java.lang.String)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM