比较两个字符串

ISJ*_*ISJ 3 java string reverse

我有以下代码:

    int t = s.length()-1;
    int g = 0;

    for (int i=0; i < s.length(); i++){

        if (s.charAt(i) != h.charAt(t--));
            g++;

    }

    if (g==0)
        return true;

    else 
        return false;
Run Code Online (Sandbox Code Playgroud)

基本上这个代码假设要做的是测试字符串h的inverse是否等于string s,反之亦然.由于某种原因,总会返回"假" - 尽管明显的答案是正确的.

谁能告诉我我的代码有什么问题?

谢谢!

dar*_*ioo 8

我要说额外的;是罪魁祸首.

代替

if (s.charAt(i) != h.charAt(t--));
Run Code Online (Sandbox Code Playgroud)

使用

if (s.charAt(i) != h.charAt(t--))
Run Code Online (Sandbox Code Playgroud)

你应该总是走"安全"的路线.也就是说,在if-else语句之后使用大括号(几乎可以在任何地方使用它们),所以这样的错误不会发生在第一位.写它的正确方法是:

if (s.charAt(i) != h.charAt(t--)) {
   g++;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你不先检查s并且h长度相同,你的代码就会爆炸.

  • 并使用牙箍. (2认同)