当 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;