java - 即使条件为真,为什么我的方法返回 false?
问题描述
public class Lab3Exercises {
public static void main(String[] args){
Scanner s = new Scanner([System.in](https://System.in));
System.out.println("Please enter a word to check if it is a palindrome");
String myP = [s.next](https://s.next)();
System.out.println(palindrome(myP));
}
public static boolean palindrome(String p){
String myWord = p;
String reverseWord = "";
int i = 1;
while (i < myWord.length()){
reverseWord = myWord.charAt(i) + myWord.substring(0, i) + myWord.substring((i + 1), myWord.length());
i++;
}
if (reverseWord.equals(myWord)) {
return true;
}
else{
return false;
}
}
我检查了一下,reverseWord 与 myWord 完全相同,但每次都返回 false。我试过汉娜、赛车等。他们都返回假
解决方案
让我们从更简单的例子开始。
- 例如,如果
p
长度为 1s
(回文),则您将设置reverseWord
为空字符串。由于i
从 1 开始,不小于长度,所以循环不运行。由于空字符串不等于s
,因此该方法返回 false。 - 输入
tt
(另一个回文)。您正在循环运行一次,设置reverseWord
为"t" + "t" + ""
="tt"
。在这种情况下,该方法正确返回 true。 - 输入
obo
:您reverseWord
首先设置为boo
,然后设置为"oob"
("o" + "ob" + ""
),丢弃第一个值。
我认为您需要再次考虑您的逻辑。
提示:学习使用调试器。
推荐阅读
- python - python类的增量
- java - Java Fx 如何引用类中添加的元素
- python - 计算 5 年的学费增长
- c++ - 增强野兽中的多部分边界
- javascript - 在两个不同的行中增加天数
- python-3.x - 需要解释下面的python代码
- angular - 如何使用 Angular 将 url 传递给构建库(lib)
- java - Grafana 查询以从 JSON 中获取特定值
- rest - 访问被拒绝 - 使用 BASIC CORS 身份验证从 Intranet 调用的受信任的 Internet 站点 - IE11 兼容性 - ExtJS
- reactjs - 将盖茨比图像作为道具传递