0
我试图将我的数据库中的项目与EditText(用户输入)的值进行比较。答案可以有多个答案,由','分隔。我首先将它们放入一个串列表中,然后将它们与答案进行比较。 LevenshteinDistance检查答案是否更好(http://en.wikipedia.org/wiki/Levenshtein_distance#Computing_Levenshtein_distance)。循环结构给出了错误的结果
userAnswer = etUserAnswer.getText().toString().toLowerCase();
String[] answers = qAnswer.split(",");
for (String answer : answers) {
if (answer.equals(userAnswer)) {
Toast.makeText(getApplicationContext(), ("Answer Correct"),
Toast.LENGTH_SHORT).show();
tvMessage.setText("You smartass!");
} else {
Toast.makeText(getApplicationContext(), ("Wrong"),
Toast.LENGTH_SHORT).show();
points = points - 4;
String answerGood = answer.toLowerCase();
LevenshteinDistance lDistance = new LevenshteinDistance();
int comparisonCheck = lDistance.computeLevenshteinDistance(
userAnswer, answerGood);
if (comparisonCheck == 1) {
tvMessage.setText("Almost there, but not quite yet!");
} else if (comparisonCheck > 1) {
tvMessage.setText("Are you serious, totally wrong?!");
}
}
}
假设我有如下的一个数据库中的问题的答案:树,测试,无线电
我有两个问题:
当我键入“radi”它给了我'几乎那里...',这很好。如果我输入“tes”,它也应该给我,但是它会给我'你是否认真,......'这一行。我想它一直与最后一个相比。
2.每当我输入一些不正确的东西时,我会得到-12而不是-4。我想这是因为我有三个答案,它循环三次..但我不知道如何才能使它只计算一次..
任何人都可以帮助我的方式吗?谢谢!
这确实看起来像一个更好的结构。我会试试这个!一个问题:你首先定义minDistance,然后你采用这个数字的最小值和我的Levenshtein类的一个新实例。你为什么这样做?如果问题只有一个答案,for循环不会给出错误? (或者你是否从头开始初始化它?) –