gpt4 book ai didi

java - 为什么 .equals 没有将我的变量识别为我传递它的同一字符串?

转载 作者:行者123 更新时间:2023-12-01 16:28:29 25 4
gpt4 key购买 nike

所以这个小函数应该检查括号和方括号是否彼此匹配。我觉得它应该有效,我已经尝试了几种不同的方法,但我不知道如何检查我的下一个字符是否是我期望的。

class Parenths {
public boolean isValid(String s) {
char[] parens = s.toCharArray();
if (parens.length == 0) return true;
for (int i = 0; i < parens.length; i+=2) {
String curr= String.valueOf(parens[i]);
String next = String.valueOf(parens[i+1]);
// System.out.println(next.equals(")"); --------> false
// System.out.println(Object.equals(next, ")")); ----> error
switch (curr) {
case "(": if (!next.equals(")")) return false;
case "{": if (!next.equals("}")) return false;
case "[": if (!next.equals("]")) return false;
}
}
return true;
}
}

您可以看到我打印来调试的行,似乎 .equals 在这里使用不正确?谁能解释为什么这不起作用?

PS。我意识到我不必将字符串转换为字符数组来比较元素,因此除非这是唯一的解决方案,否则请不要向我指出这一点。

最佳答案

没有测试过,不过好像是失败的问题。 尝试将 if (boolean) return boolean 替换为 return boolean,这应该可以解决问题。

问题是您在案例末尾没有 break ,因此,例如,如果您的第一个案例为真,它将不会停止执行并执行第二个测试,这将是错误的。如果将条件语句更改为直接返回,则不会出现此问题。

编辑:抱歉,我读得太快了。这样做会打破你的循环。实际上,您必须在案例末尾添加一个break

                case "(": if (!next.equals(")")) return false; break;
case "{": if (!next.equals("}")) return false; break;
case "[": if (!next.equals("]")) return false; break;

关于java - 为什么 .equals 没有将我的变量识别为我传递它的同一字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62108770/

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