gpt4 book ai didi

java - 我在这段java代码中缺少什么?

转载 作者:行者123 更新时间:2023-12-01 18:41:05 24 4
gpt4 key购买 nike

if (array[i]<(char)65 || array[i]>(char)122 && 
array[i]>(char)91 || array[i]<=(char)96)
System.out.println("False")

在这段代码中,当我尝试将字符“C”(顺便说一句,即 67)分配给 array[i] 时,它仍然显示 false。我做了数学计算,它不应该打印“false”,正如我在这一行下面所说的那样。

(67 < 65 = 0 || 67 > 122 = 0) = 0

(67 > 91 = 0 || 67 <= 96 = 1) = 1

因此,我们得到: 0 & 1 = 0 。有什么想法吗?

最佳答案

经过一些格式化,您的代码是:

if ( array[i] < (char)65 || array[i] >  (char)122 &&
array[i] > (char)91 || array[i] <= (char)96 )
System.out.println("False");

由于 && 的优先级高于 || (参见 Operators ),这相当于:

if (    array[i] <  (char)65
|| ( array[i] > (char)122 && array[i] > (char)91 )
|| array[i] <= (char)96 )
System.out.println("False");

由于 && 是短路,因此在行为上等同于:

if (  array[i] < (char)65
|| array[i] > (char)122
|| array[i] <= (char)96 )
System.out.println("False");

由于最后一个案例涵盖了第一个案例,因此在逻辑上相当于:

if ( array[i] > (char)122 || array[i] <= (char)96 )
System.out.println("False");

只要值大于 122 或小于或等于 96,您就会打印 False。67 小于 96,因此您会打印 False。正如评论中所指出的,运算符具有优先权。与其学习所有细节(以预测这样的情况),不如使用足够的括号更容易。

关于java - 我在这段java代码中缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961254/

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