gpt4 book ai didi

java - 为什么我在这里得到不同的结果?

转载 作者:行者123 更新时间:2023-12-01 20:10:48 24 4
gpt4 key购买 nike

我有下一个任务:给定一个整数数组,如果该数组不包含 1 和 3,则返回 true。

第一个版本是正确的:

for (int i = 0; i < nums.length; i++){
if(nums[i] == 1 || nums[i] == 3)
return false;
}
return true;

但是我有很多错误的测试:

for (int i = 0; i < nums.length; i++) {
if (nums[i] != 1 || nums[i] != 3)
return true;
}
return false;

你能解释一下为什么它会这样工作吗?我认为原因是第二个 if(...) 发生了一些事情

最佳答案

如果没有 1 且没有应该返回true > 3秒。

让我们看看您的第二个代码:

// Iterate all values
for (int i = 0; i < nums.length; i++) {
// Return true if value is not 1 OR not 3
if (nums[i] != 1 || nums[i] != 3)
return true;
}

// Return false
return false;

这里的关键是条件 val != 1 || val != 3 这是一个同义反复,即在所有情况中它都是​​true。假设值为5,它不是1,因此返回true。现在假设值为 1,它是 1 但它不是 3,也是 true 返回。

您需要将 || 替换为 &&,这意味着 ,这也能更好地反射(reflect)您的文本条件:

return true if the array contains no 1's and no 3's

但是,如果您找到的第一个元素既不是 1 也不是 3,则不能直接返回 true。您首先需要检查所有元素。但是,如果找到第一个 13,则可以直接返回 false。这正是您的代码的第一个版本,它正确

<小时/>

请注意,当否定条件时,您还需要否定所有量词运算符

第一个代码使用此逻辑实现了一种方法:

  • 否(存在一个 13 元素)
  • Ø(∃ e : e = 1 ∨ e = 3)

现在解决否定时,您会收到以下逻辑:

  • 所有元素都不是 1 并且不是 3
  • ∀ e : e ≠ 1 ∧ e ≠ 3

因此,(存在)变为(对于所有),=()到 ()。

关于java - 为什么我在这里得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744402/

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