Java 字符串输入中的单词错误检测

Java 字符串输入中的单词错误检测,java,string,swing,Java,String,Swing,我正在尝试编写一个代码,可以检测用户输入中有关存储在程序中的字符串数组的错误 假设程序包含“敏捷的棕色狐狸跳过懒惰的狗” 如果用户输入“快速棕色跳过懒惰” 程序告诉用户您犯了5个错误。但是我的代码对于上面提到的用户输入无法正常工作。我的代码缺少什么来检测这些错误。代码如下: public void checkTextCompleted() { String input= text.getText(); int temp=array[0],mistakes=0; if(i

我正在尝试编写一个代码,可以检测用户输入中有关存储在程序中的字符串数组的错误

假设程序包含“敏捷的棕色狐狸跳过懒惰的狗”

如果用户输入“快速棕色跳过懒惰”

程序告诉用户您犯了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);
    }
}
public void checkTextCompleted()
{
字符串输入=text.getText();
int temp=array[0],errors=0;
if(input.length()==data.length()){
text.setEditable(false);
text.setFocusable(false);

对于(int j=0;j我不理解您的所有代码,但是这样的解决方案有什么问题:

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.
String[]expectedWords=“快速棕色狐狸”。拆分(“”);
字符串[]inputWords=inputText.split(“”);
int=0;
if(expectedWords.length!=inputWords.length){
返回;
}
for(int i=0;i
你不能用这个简单的逻辑来压缩你的代码吗

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);
}
String[]expectedSentenceA=“敏捷的棕色狐狸跳过了懒狗”。拆分(“”);
String[]inputStringA=inputString.split(“”);
int diff=预期语句A.length-inputStringA.length;
如果(差异>0){
System.out.println(“您错过了“+diff+”单词)…!!!”;
}否则如果(差异<0){
System.out.println(“找到“+diff+”多余单词)…!!!”;
}否则{
ArrayList mistakeWords=新ArrayList();

对于(int i=0;i什么时候是1个错误?您的要求是什么?例如,“AB”而不是“ba”,这是1个还是2个错误?“abc”而不是“cba”;1个或3个错误?您实际上想问什么?当用户输入“快速棕色狐狸跳过懒狗”或“快速棕色狐狸跳过懒狗”时,会出现1个错误.类似地,当输入为“机智的棕色狐狸jmps胜过懒惰的狗”时,也会出现2个错误。在声明错误之前,我的程序将检查单词后的子字符串,其索引为find currentlyso,因此每个单词最多有一个错误?是的,但错误单词后的其余输入字符串应与内置字符串匹配。您正在逐字符检查字符串,这可能会声明错误的mis编号需要。不是一个字符一个字符,一个单词一个单词!或者我不理解你的问题。输入
FOO brown fox跳过lazy dog
将导致一个错误,如果数组元素每个只有一个单词。实际上,你将字符串视为字符数组。你的代码检查输入字符串数组是否等于内置字符串数组。Should此
FOO brown fox跳过懒惰的狗
会导致1个错误吗?-比我的代码正确。否则我不理解您的要求。在比较之前必须检查inputStringA的大小。您向我展示了一种使用字符串的新方法。非常感谢您的帮助良好的实验。请尝试更多。这是我在中使用的一个游戏示例g swing如果输入字符串的长度小于内置字符串怎么办?我正在考虑设置一个条件,如果输入字符串的长度小于内置字符串的长度,那么检查循环将一直运行到输入字符串的长度。还有其他更好的方法吗?