从两个字符串数组中获取匹配的单词并更改一个字母关闭的单词

时间:2017-11-27 21:20:53

标签: java arrays string string-matching

我有一个{[1}}的String []和另一个从文件读取的String [] userInput。我试图让fileInput中的单词与文件输入中的单词匹配。注意:所有单词仅限3个字母。 棘手的部分是我必须将userInput只用一个字母关闭的单词更改为userInput内的正确单词。 例如,我的字符串数组fileInput包含:[cat,dog,run,man,jaw,max]所以如果fileInput中的一个索引包含单词 bat 我必须将其更改为 cat 。 任何帮助表示赞赏。

userInput

1 个答案:

答案 0 :(得分:0)

输入:

  • 用户输入数组(长度为3的字符串)
  • 文件输入数组,要检查的字典(长度为3的字符串)

输出:

  • 检查单词数组(只能修改用户输入)

作为一项功能:

String[] verify(String[] input, String[] dict)
{
    String[] output = new String[input.length];
    System.arraycopy(input, 0, output, 0, input.length);
    loop: for(int i = 0; i < output.length; i++)
        for(String s : dict)
            if((s.charAt(0) == output[i].charAt(0) ? 1 : 0) + (s.charAt(1) == output[i].charAt(1) ? 1 : 0) + (s.charAt(2) == output[i].charAt(2) ? 1 : 0) == 2)
            {
                output[i] = s;
                continue loop;
            }
    return output;
}

我确定有更好的方法来检查3位数字是否相同,if语句只是总和了多少是相等的

优先考虑相等的值(因此,如果“cat”和“mat”是字典中的条目,则用户输入“cat”将不会更改为“mat”):

String[] verify(String[] input, String[] dict)
{
    String[] output = new String[input.length];
    System.arraycopy(input, 0, output, 0, input.length);
    loop: for(int i = 0; i < output.length; i++)
    {
        for(String s : dict)
            if(s.charAt(0) == output[i].charAt(0) && s.charAt(1) == output[i].charAt(1) && s.charAt(2) == output[i].charAt(2))
                continue loop;

        for(String s : dict)
            if((s.charAt(0) == output[i].charAt(0) ? 1 : 0) + (s.charAt(1) == output[i].charAt(1) ? 1 : 0) + (s.charAt(2) == output[i].charAt(2) ? 1 : 0) == 2)
            {
                output[i] = s;
                continue loop;
            }
    }

    return output;
}

获取匹配单词,更正单词和无效单词的不同数组:

String[][] verify(String[] input, String[] dict)
{
    List<String> matched = new ArrayList<String>();
    List<String> corrected = new ArrayList<String>();
    List<String> missing = new ArrayList<String>();

    loop: for(int i = 0; i < input.length; i++)
    {
        for(String s : dict)
            if(s.charAt(0) == input[i].charAt(0) && s.charAt(1) == input[i].charAt(1) && s.charAt(2) == input[i].charAt(2))
            {
                matched.add(input[i]);
                continue loop;
            }

        for(String s : dict)
            if((s.charAt(0) == input[i].charAt(0) ? 1 : 0) + (s.charAt(1) == input[i].charAt(1) ? 1 : 0) + (s.charAt(2) == input[i].charAt(2) ? 1 : 0) == 2)
            {
                corrected.add(s);
                continue loop;
            }
        missing.add(input[i]);
    }

    return new String[][]{matched.toArray(new String[0]), corrected.toArray(new String[0]), missing.toArray(new String[0])};
}
  • 输出[0] - 匹配的单词
  • 输出[1] - 更正的字词
  • 输出[2] - 缺少单词