连续删除最后一个单词并签入数据库表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循环执行次数:)