gpt4 book ai didi

java - 连续if和嵌套if有什么区别?

转载 作者:行者123 更新时间:2023-12-02 03:09:55 25 4
gpt4 key购买 nike

我是 Java 新手。这是我的两个代码。

1).

<小时/>
    if (!isCorrectGuess(guess) && !isPriorGuess(guess)){
state += 1;
}

if( isCorrectGuess(guess) && !isPriorGuess(guess)){
correctguess += guess;
}

if (!isPriorGuess(guess)){
guessed += guess;
}

return isCorrectGuess(guess) && !isPriorGuess(guess);

2).

<小时/>
    if (!isPriorGuess(guess)){
guessed += guess;
if (isCorrectGuess(guess)){
correctguess += guess;
return true;
}
else{
state += 1;
return false;
}
}
return false;

我认为他们应该有相同的结果,但看来我错了。谁能告诉我这两个代码有什么区别?谢谢!

这是我的作业,第一个代码未通过测试,但第二个代码通过了。

这是我的 isCorrect 和 isPrior 代码:

<小时/>
public boolean isCorrectGuess(char guess) {
return guessWord.indexOf(guess) != -1;
}

public boolean isPriorGuess(char guess) {
return guessed.indexOf(guess) != -1;
}

最佳答案

您的问题被标记为 Javascript,但您的问题却显示为 Java。它们根本不一样,但我的答案对于两种语言都是相同的。

假设isCorrectGuess()isPriorGuess()idempotent (每次调用它们时表现相同)并且没有副作用,两种情况之间的唯一区别(据我所知)是调用两个函数的次数和顺序。对各个变量和返回值的影响似乎是相同的。

编辑您对问题的编辑解释了为什么这两种情况不同。对 isPriorGuess() 的调用依赖于 guessed 的当前值,该值随着情况 1 和情况 2 的执行而变化。特别是,假设在任一情况执行之前,isPriorGuess(guess) 返回 false 并且 isCorrectGuess(guess) 返回 true。然后在情况1中,代码

if (!isPriorGuess(guess)){
guessed += guess;
}

更改 guessed 的值,以便在后续调用中,isPriorGuess(guess) 将返回 true。因此,当执行 return 语句时:

return isCorrectGuess(guess) && !isPriorGuess(guess);

返回值始终为false(isCorrectGuess(guess)返回falseisPriorGuess(guess) > 将返回true)。在情况 2 中,这种情况不会发生,因为 isPriorGuess(guess) 只被调用一次(并且 isCorrectGuess(guess) 被调用 0 次或 1 次,具体取决于isPriorGuess(猜测))。

关于java - 连续if和嵌套if有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205095/

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