DB の項目を EditText (ユーザー入力) の値と比較しようとしています。回答には、「,」で区切られた複数の回答を含めることができます。最初にそれらを stringarray に入れてから、それらを答えと比較します。レーベンシュタイン距離は、答えが良いか悪いかをチェックします ( 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?!");
}
}
}
次のように、DB 内の質問に対する回答を持っているとします: tree,test,radio
私は2つの問題を抱えています:
1.「radi」と入力すると、「あと少し...」というメッセージが表示されます。「tes」と入力すると、これも表示されるはずですが、代わりに「Are you Serious,...」という行が表示されます。前回と比べても変わらないと思います。
2.正しくないものを入力するたびに、-4 ではなく -12 が返されます。これは、答えが 3 つあり、3 回ループするためだと思いますが、1 回だけカウントする方法がわかりません。
誰でも途中で私を助けることができますか?ありがとう!