当 char = ' ' 时,Char 变量不会第一次更改值?
Char variable doesn't change value first time around when 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 odd or even"。
在 j = 12,last = ' ' 并且循环检查它的条件 (last<'a' || last>'z') 然后迭代 last = word.charAt(j--);再次使用 j = 11。出于某种原因,在调试工具中,last 仍然等于 ' ',导致它再次迭代 j = 10 & last = 'r'。当 String word = "Borrow or rob" 时会出现同样的问题,但当等于 "a ppa" 和 "Borro b" 时不会出现。
这会导致某些回文被归类为非。
//last = word.charAt(j);是再次分配值并解决了问题,但我只想了解为什么首先会发生这种情况。感谢阅读。
它的发生是因为 post-increment/decrement。将其更改为 pre-increment/decrement 即
替换
first = word.charAt(i++);
last = word.charAt(j--);
和
first = word.charAt(++i);
last = word.charAt(--j);
请注意,在 post-increment/decrement 的情况下,首先发生赋值,然后发生更改 (increment/decrement),例如last = word.charAt(j--)
处理如下:
last = word.charAt(j);
j = j -1;
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 odd or even"。 在 j = 12,last = ' ' 并且循环检查它的条件 (last<'a' || last>'z') 然后迭代 last = word.charAt(j--);再次使用 j = 11。出于某种原因,在调试工具中,last 仍然等于 ' ',导致它再次迭代 j = 10 & last = 'r'。当 String word = "Borrow or rob" 时会出现同样的问题,但当等于 "a ppa" 和 "Borro b" 时不会出现。
这会导致某些回文被归类为非。
//last = word.charAt(j);是再次分配值并解决了问题,但我只想了解为什么首先会发生这种情况。感谢阅读。
它的发生是因为 post-increment/decrement。将其更改为 pre-increment/decrement 即
替换
first = word.charAt(i++);
last = word.charAt(j--);
和
first = word.charAt(++i);
last = word.charAt(--j);
请注意,在 post-increment/decrement 的情况下,首先发生赋值,然后发生更改 (increment/decrement),例如last = word.charAt(j--)
处理如下:
last = word.charAt(j);
j = j -1;