gpt4 book ai didi

java - 为什么我的计数器不能正常计数?尽管我的 if 语句未填写,但它添加了 +1

转载 作者:行者123 更新时间:2023-12-05 09:30:06 26 4
gpt4 key购买 nike

所以我的计数器应该不会为字符串 ":DD" 计数 +1这就是为什么我只在我的字符串长度为 2 时才写的原因柜台应该加+1。但是它会添加 +1,尽管字符串长度为 3。这是为什么?

P.S.:我输入了 length() <=3在第一个if声明,另一个else if在第二个 if 之后声明。

int counter = 0;
String tgt = ":DD";

for (int i = 0; i < a.size(); i++) {
if (tgt.length() <= 3 && tgt.charAt(0) == ':' || tgt.charAt(0) == ';') {
if (tgt.length() == 2 &&
tgt.charAt(1) == ')' || tgt.charAt(1) == 'D') {
counter += 1;
}
}
}

最佳答案

&& 运算符的优先级高于 ||,打乱了您的预期逻辑。

Java operators page按优先顺序列出 Java 运算符。

因此,两个 && 操作数就好像是括号:

if ((tgt.length() <= 3 && tgt.charAt(0) == ':') || tgt.charAt(0) == ';')
{
if ((tgt.length() == 2 && tgt.charAt(1) == ')') || tgt.charAt(1) == 'D')

在第二个if条件下,&&可能返回false,但是第二个(index 1)字符是'D',所以整个条件为 true,您的计数器得到更新。

在您的 || 操作数周围放置显式括号,我认为这是您的意图。

if (tgt.length() <= 3 && (tgt.charAt(0) == ':' || tgt.charAt(0) == ';'))
{
if (tgt.length() == 2 && (tgt.charAt(1) == ')' || tgt.charAt(1) == 'D'))

关于java - 为什么我的计数器不能正常计数?尽管我的 if 语句未填写,但它添加了 +1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69889036/

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