我正在使用用户输入进行编辑距离。我将我的值存储在数组中。然后编辑距离将比较用户输入和我的字符串数组。我正在做一个循环,如果编辑距离大于2,它将显示无效的其他有效。
我唯一遇到的问题是虽然程序运行良好,但输出结果是所有' 28'我在数组中的字符串。我想只显示无效或有效一次。
Test是我的字符串数组,用户是 - 字符串用户 - 用户输入。
void testingLD()
{
for (int i=0; i<test.length; i++)
{
if(getLevenshteinDistance(test[i],user) > 2)
{
println ("Invalid re-input");
}
else
{
println ("Valid");
}
}
}
答案 0 :(得分:0)
您的循环中有打印线功能,因此每次迭代都会打印一次。
试试这个。
void testingLD()
{
boolean isValid = true; // assume true, check each and update
// begin loop
for (int i=0; i<test.length; i++)
{
if(getLevenshteinDistance(test[i],user) > 2)
{
isValid = false;
break; // don't need to test the rest of the loop if we already found a false
}
}
// end loop
if(isValid){
println("Valid");
}else{
println("Invalid re-input");
}
}
同样,您可以计算有效int validCount = 0; validCount++
的数量,然后显示有效数量,百分比等的统计数据。或者保留无效字符串的数组并将其显示为失败的字符串等等!
总结: 如果要检查整个集合或数组的某些条件并输出一个答案,请确保将输出放在循环之外!