Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连续删除最后一个单词并签入数据库表java_Java_Mysql - Fatal编程技术网

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

连续删除最后一个单词并签入数据库表java,java,mysql,Java,Mysql,我有一个小的翻译程序要开发。用户输入一个句子,然后在我的数据库中的一个表中签入该句子。如果发现句子与句子匹配。它会显示结果,否则它会删除句子的最后一个单词并重新检查,直到找到匹配项或留下一个单词(待开发)。我有一个用于处理句子间匹配的小实现,但是我的循环有一个小问题。我想不出如何使它起作用。我知道问题是循环的另一部分,我不知道怎么做。我不确定编译器是否会循环回被截断的句子 String sentence = "i am a good boy";

我有一个小的翻译程序要开发。用户输入一个句子,然后在我的数据库中的一个表中签入该句子。如果发现句子与句子匹配。它会显示结果,否则它会删除句子的最后一个单词并重新检查,直到找到匹配项或留下一个单词(待开发)。我有一个用于处理句子间匹配的小实现,但是我的循环有一个小问题。我想不出如何使它起作用。我知道问题是循环的另一部分,我不知道怎么做。我不确定编译器是否会循环回被截断的句子

                 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;
}
String语句=“我是个好孩子”;
对于(int j=0;j1)
{
句子=查找中心部分(句子);
rs2=语句数据库查询(句子、srcLanguage、targLanguage);
if(rs2.first()==true)
{
System.out.println(“mon pass dan rs1 true”);
sb1.append(rs1.getString(targetLanguage));
sentencePart=sb1.toString();
系统输出打印LN(句子部分);
}
其他的
{
句子=查找中心部分(句子);
rs2=语句数据库查询(句子、srcLanguage、targLanguage);
if(rs2.first()==true)
{
sb1.append(rs1.getString(targetLanguage));
sentencePart=sb1.toString();
系统输出打印LN(句子部分);
}
}
}
}
公共字符串lookUpSentencePart(字符串语句)
{
句子=句子.子字符串(0,句子.lastIndexOf(“”));
返回判决;
}
public ResultSet语句数据库查询(字符串语句、字符串源、字符串目标)
{
结果集rs=null;
报表stmt;
myConnection db=新的myConnection();
尝试
{
连接myConn=db.theconnect();
stmt=myConn.createStatement();
rs=stmt.executeQuery(“从句子中选择“+source+”='”+句子+”);
}
捕获(SQLE异常)
{
e、 printStackTrace();
}
返回rs;
}

可能您需要这样的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();
}
String[]句子=“我是个好孩子”。拆分(“”);

对于(int j=0;jj)您遇到了什么问题?请说得更具体一些。@shmosel我不确定编译器是否会重新编译更新的句子:/compiler编译您的代码,运行时会运行它。您的代码是否编译?它是否做了您想要的事情?您怎么会“不确定”?您希望它做什么?它在做什么?如果您无法定义问题,您希望我们如何帮助您?运行时在开始执行之前只计算一次for循环执行次数:)