如何解决当 char = ' ' 时,Char 变量第一次不会改变值?
for(i=0,j=word.length()-1; i<=j; i++,j--)
{
char first = word.charAt(i);
char last = word.charAt(j);
while(first<'a' || first>'z')
{
first = word.charAt(i++);
}
while(last<'a' || last>'z')
{
last = word.charAt(j--);
//last = word.charAt(j);
}
System.out.println(first + " " + last);
if(first != last)
{
System.out.println("not a palindrome");
check = false;
break;
}
else
check = true;
}
这特别发生在 char 变量 last 上。当 String word ="Never奇数或偶数"时。 在 j = 12 处,last = ' ' 并且循环使用条件 (last'z') 检查它,然后迭代 last = word.charAt(j--);再次使用 j = 11。由于调试工具中的某些原因,last 仍然等于 ' ',导致它再次使用 j = 10 进行迭代& last = 'r'。 String word = "Borrow or rob" 会出现同样的问题,但当等于 "a ppa" 和 "Borro b" 时不会出现。
这会导致某些回文被归类为 not。
//last = word.charAt(j);是再次分配值并解决了问题,但我只想了解为什么首先会发生这种情况。感谢阅读。
解决方法
这是由于后递增/递减而发生的。将其更改为预递增/递减,即
替换
first = word.charAt(i++);
last = word.charAt(j--);
与
first = word.charAt(++i);
last = word.charAt(--j);
请注意,在后递增/递减的情况下,首先发生赋值,然后发生更改(递增/递减),例如last = word.charAt(j--)
的处理方式如下:
last = word.charAt(j);
j = j -1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。