连续删除最后一个单词并检入数据库表java

时间:2017-03-20 08:39:48

标签: java mysql

我有一个小的翻译计划要开发。用户输入一个句子然后检查我的数据库中的表格。如果找到与句子匹配的句子。它显示结果,否则它会删除句子的最后一个单词并重新检查,直到找到匹配或者直到剩下一个单词(待开发)。我有一个小的实现处理句子匹配,但我的循环有一个小问题。我无法弄清楚它是否有效。我知道问题是循环的else部分我无法弄清楚如何做到这一点。我不确定编译器是否会为截断的句子循环回来。

                 String sentence = "i am a good boy";
                 for(int j=0;j<sentence.length();j++)
                 {          

                    if(sentence.length()>1)
                    {
                        sentence = lookUpSentencePart(sentence);      
                        rs2 = sentenceDBQuery(sentence,srcLanguage,targLanguage);

                        if(rs2.first()==true)
                        {

                            System.out.println("mon pass dan rs1 true");
                            sb1.append(rs1.getString(targLanguage));
                            sentencePart = sb1.toString();
                            System.out.println(sentencePart);
                        }
                        else
                        {
                            sentence = lookUpSentencePart(sentence);
                            rs2 = sentenceDBQuery(sentence,srcLanguage,targLanguage);
                            if(rs2.first()==true)
                            {
                                sb1.append(rs1.getString(targLanguage));
                                sentencePart = sb1.toString();
                                System.out.println(sentencePart);
                            }
                        }
                    }
                }
public String lookUpSentencePart(String sentence)
{
    sentence = sentence.substring(0, sentence.lastIndexOf(" "));
    return sentence;
}
public ResultSet sentenceDBQuery(String sentence, String source, String target)
{
    ResultSet rs = null;
    Statement stmt;
    myConnection db = new myConnection();
    try
    {
        Connection myConn = db.theconnect();
        stmt = myConn.createStatement();
        rs = stmt.executeQuery("SELECT " + target + " from sentence WHERE " + source + " = '" + sentence+"'");
    }
    catch(SQLException e)
    {
        e.printStackTrace();
    }
    return rs;
}

1 个答案:

答案 0 :(得分:1)

可能你需要那样的smth :)你还需要添加一些边界检查

String[] sentence = "i am a good boy".split(" ");
for(int j=0;j<sentence.length;j++)
{
    String realSentence = buildSentence(sentence, j);      
    rs2 = sentenceDBQuery(realSentence,srcLanguage,targLanguage);

    if(rs2.first()==true)
    {

        System.out.println("mon pass dan rs1 true");
        sb1.append(rs1.getString(targLanguage));
        sentencePart = sb1.toString();
        System.out.println(sentencePart);
    }
}

public String buildSentence(String[] parts, int index) {
    StringBuilder result = new StringBuilder();
    for (int j = 0; j < (parts.length - index); j++) {
        sb.append(parts[j]).append(" ");
    }
    sb.setLength(sb.length() - 1);
    return result.toString();
}