输入:
- 用户输入数组(长度为 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] - 缺少单词