我正在尝试创建一个代码,该代码可以检测用户输入中存储在程序中的String数组中的错误。
让我们说程序包含“快速的棕色狐狸跳过懒狗”
如果用户输入“快速棕色是名字跳过懒惰”
程序告诉用户你犯了5个错误。但是我的代码对于上面提到的用户输入没有正常工作。我的代码缺少什么来检测这样的错误。这是代码:
public void checkTextCompleted()
{
String input= text.getText();
int temp=array[0],mistakes=0;
if(input.length()==data.length()) {
text.setEditable(false);
text.setFocusable(false);
for(int j=0;j<dataWords;j++) {
int x = input.indexOf(data.substring(array[j]-temp, array[j]-1));
System.out.println(x);
if(x != -1) {
String subs = input.substring(x, input.length());
if(data.contains(subs)) {
break;
} else {
mistakes++;
if(j!=0)
temp=array[j-1];
else
temp=array[j];
}
}
else
mistakes++;
}
JOptionPane.showMessageDialog(null,"You have made "+mistakes+" mistakes" , "Typing Test Completed", JOptionPane.OK_OPTION);
}
}
array []包含程序内置字符串(数据)中检测到空格的位置,dataWords包含程序内置字符串(数据)中的字数。用户输入存储在“输入”
中我的代码缺少什么来检测上述问题?
注意: 如果一个单词出错并且其后的剩余字符串是正确的,则错误将是另一个明智的,下一个错误将在同一主体上被检测到。
此致
答案 0 :(得分:1)
你不能通过这个简单的逻辑缩小你的代码吗?
String[] expectedSentenceA = "The quick brown fox jumps over the lazy dog".split(" ");
String[] inputStringA = inputString.split(" ");
int diff= expectedSentenceA.length-inputStringA.length;
if(diff>0) {
System.out.println("You have missed " + diff + " word(s)..!!!");
} else if (diff < 0) {
System.out.println("Found " + diff + " excess word(s)..!!!");
}else {
ArrayList<String> mistakeWords= new ArrayList();
for(int i=0;i<expectedSentenceA.length;i++) {
if(!expectedSentenceA[i].equals(inputStringA[i])){
mistakeWords.add(inputStringA[i]);
}
}
JOptionPane.showMessageDialog(null,"Total Mistakes ["+mistakeWords.size()+"] are " + mistakeWords);
}
答案 1 :(得分:0)
我不了解您的所有代码,但是这样的解决方案出了什么问题:
String[] expectedWords = "The quick brown fox".split(" ");
String[] inputWords = inputText.split(" ");
int mistakes = 0;
if (expectedWords.length != inputWords.length) {
return;
}
for (int i = 0; i < expectedWords.length; i++) {
if (!expectedWords[i].equals(inputWords[i])) {
mistakes++;
}
}
// Show number of mistakes.