轻松修复 while 循环第二次无法正确执行?



我在java上相当新手,目前有一个任务,要拿一个给定的单词,把第一个单词放在最后,从反向重建单词,看看它是否与原来的单词相同,例如:语法,土豆,不均匀,梳妆台,香蕉等。到目前为止,我有这个:

Scanner input = new Scanner(System.in);
String original, reverse = "";
String exit = "quit";
int index;
System.out.println("Please enter a word (enter quit to exit the program): ");
original = input.next();
while (!original.equalsIgnoreCase(exit))
{
String endingChar = original.substring(0, 1);
String addingPhrase = original.substring(1);
reverse += endingChar;
for (index = addingPhrase.length() - 1; index >= 0; --index)
{
char ch = addingPhrase.charAt(index);
reverse += ch;
}
if (original.equals(reverse))
{
System.out.println("Success! The word you entered does have the gramatic property.");
}
else 
{
System.out.println("The word you entered does not have the gramatic property."
+ " Please try again with another word (enter quit to exit the program): ");
}
original = input.next();
}
input.close();

当我运行它并输入单词"banana"时,它正确地认识到当 b 移动到末尾时它确实向后相同,并且对上面列出的其他单词执行相同的操作,但是当我在循环中输入第二个单词时,它永远不会正确识别它,并且总是使用 else 块中的 print 语句响应:

Please enter a word (enter quit to exit the program): 
banana
Success! The word you entered does have the gramatic property.
banana
The word you entered does not have the gramatic property. Please try again 
with another word (enter quit to exit the program): 

我猜这与我制作 for 循环的方式有关,或者与我在 while 循环结束时请求输入的方式有关,但就像我说的,我在调试方面相当新且糟糕。任何帮助将不胜感激,提前非常感谢。

您在每次迭代中都会更改字符串reverse,但您没有清除它。所以在循环结束之前或开始时清除字符串,例如:reverse = "",然后应该没问题。

只需添加反向 = ";在 while 循环结束时,以便将变量反向设置为其原始状态,即空字符串

最新更新