在我的简单代码中找不到逻辑错误

时间:2016-02-12 16:44:45

标签: java

以下方法用空格替换字符串变量中的每个括号和每个逗号。它还使用正则表达式替换只有一个空格的多个空格。

// -----------------------------------------------------
//  Replace special characters by spaces.
// -----------------------------------------------------
private String ParseCommand(String Command)
{
    String strCommand = Command;

    // Replace parenthesis and commas by a space.
    strCommand = strCommand.replace('(', ' ');
    strCommand = strCommand.replace(')', ' ');
    strCommand = strCommand.replace(',', ' ');

    // Remove extra spaces.
    strCommand = strCommand.replaceAll("\\s+"," ");
    return strCommand;
}

以上方法" ParseCommand"通过方法调用" SplitAndFind"它根据空格分割字符串。此外,它在结果数组中搜索一个标记

// -----------------------------------------------------
//  Find a token in command.
// -----------------------------------------------------
public void SplitAndFind(String Command, String TokenToFind)
{
    String strCommand = ParseCommand(Command);
    String[] strTokens = strCommand.split(" ");
    for (int i = 0; i <= strTokens.length - 1; i++)
    {
        System.out.println(strTokens[i]);
        if (strTokens[i] == TokenToFind)
        {
            System.out.println("TOKEN FOUND !!!");
        }
    }
}

最后,我从SplitAndFind调用方法main,寻找令牌PRIMARY。我的问题是找不到令牌。我显示了令牌数组中的每一项,我看到了它,但是消息&#34; TOKEN FOUND !!!&#34;永远不会显示。我做错了什么?

public static void main(String[] args) throws FileNotFoundException,     IOException
{
    dbEngine objEngine = new dbEngine();
    objEngine.SplitAndFind("CREATE TABLE animals (PRIMARY VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);", "PRIMARY");
}

1 个答案:

答案 0 :(得分:2)

字符串需要与equals函数进行比较。所以,这行代码:

if (strTokens[i] == TokenToFind)

应该是这样的:

if (strTokens[i].equals(TokenToFind))