gpt4 book ai didi

java - 判断输入的密码是否有效?

转载 作者:行者123 更新时间:2023-12-01 13:07:02 24 4
gpt4 key购买 nike

这是一个面试问题。我认为下面的代码可以工作一点,但有一些错误。问题如下 -

在 1-9 键盘中,有一个键不起作用。如果有人输入密码,则不会输入无效 key 。您已经给出了预期的密码并输入了密码。检查输入的密码是否有效例如:输入了 164,预期为 18684(您需要注意,当您输入 18684 和 164 时,两者都会被视为 164 输入)

上面的代码如下。

public static void main(String[] args){
System.out.println(IsAMatch("164","18684"));
}
static boolean IsAMatch(String actual, String expected)
{
char faultyKey = '\0';
int i = 0, j = 0;
for(; i < expected.length() && j < actual.length(); ++i)
{
if(actual.charAt(j) != expected.charAt(i))
{
if('\0' != faultyKey){
if(faultyKey != expected.charAt(i))
return false;
}
else{
faultyKey = expected.charAt(i);
}
}
else{
++j;
}
}
System.out.println("FaultyKey= "+faultyKey);
return (i == expected.length() - 1 && j == actual.length() - 1)? true : false;
}

它正确地检测到有问题的 key (例如,这里是 8),但给出了错误的输出(如 False),即使上面使用的测试用例应该给出 true。有什么建议来解决这个问题吗?如果有更好的方法/想法,我们将不胜感激。

最佳答案

将返回语句更改为:

return (i == expected.length() && j == actual.length())? true : false;

bug是i和j都先增加,然后检查是否满足循环条件。显然,i 和 j 都不满足条件,因为控制流跳出了循环。因此,i 和 j 分别恰好等于预期长度和实际长度。

此外,您的 return 语句中的表达式是无偿的。您可以在程序的那个点返回 true,因为它在那个阶段是同义反复。 IE。不可能在代码中的这一点上表达式的计算结果为 false。

关于java - 判断输入的密码是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23187685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com