gpt4 book ai didi

java - mod 运算符有问题;我没有得到我期待的结果

转载 作者:行者123 更新时间:2023-12-01 09:14:40 25 4
gpt4 key购买 nike

codingbat.com 上有一道题,看起来很简单,但是当我解决并提交时,当传入参数 4515 时被标​​记为错误到方法。我对以下问题的逻辑在这里做错了什么?

Return true if the given non-negative number is a multiple of 3 or 5, but not both. Use the % "mod" operator -- see Introduction to Mod

我的解决方案:

public Boolean old35(int n) {
if( n % 3 == 0 || n % 5 == 0 && !(n % 3 == 0 && n % 5 == 0) ){
return true;
}

return false;
}

Codingbat 的解决方案对我来说毫无意义:

public Boolean old35(int n) {
return n % 3 == 0 ^ n % 5 == 0;
}

最佳答案

&& 运算符优先于 ||,因此它发生在 之后!(n % 3 == 0 && n % 5 == 0) 但在或 || 之前。对于 45,确实是 35 的倍数,所以 ! 返回 false 。它是 5 的倍数,因此 true & false 产生 false。它是 3 的倍数,因此 truefalse 产生 true,根据要求这是不正确的。

您可以通过插入括号以在第一个 && 之前强制使用 || 来更正您的解决方案:

//  v                          v
if( ( n % 3 == 0 || n % 5 == 0 ) && !(n % 3 == 0 && n % 5 == 0) ){

Codingbat 的解决方案使用 XOR 运算符,^。此运算符意味着其中一个为真,但不能同时为两个,这完全符合要求。此外,没有理由 if;您可以直接返回 boolean 表达式。

关于java - mod 运算符有问题;我没有得到我期待的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355641/

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