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