Ваш код, кажется, работает со мной, вы можете просто неправильно интерпретировать его результаты.
Это может быть более очевидным:
int count = 0; if(random.length() == word.length()) {
for(int i = 0; i < random.length(); i++)
{
if((word.charAt(i) != random.charAt(i)))
{
if(count == 0)
{
System.out.println("Found first difference!");
}
if(count != 0)
{
System.out.println("Strings are more than one letter different!");
}
count++;
}
} }
Если вы хотите, чтобы проверить строк разной длины, вам необходимо удалить символы из более длинного, пока это не тот же размер, тем короче. Например: Если String1 = "abc"; и String2 = "zzzabcdef";
Вам нужно будет удалить 6 символов из второй строки и протестировать каждую комбинацию из 6 символов. Таким образом, вы захотите проверить строки: def, cde, abc, zab, zza, zzz, zzb, zzc, zzd, zze, zzf, zaf, zae, zad, zac, zab, zza, zzf, zze, ... , ..., в том числе и в списке, размер 9 выбирается 6, поэтому он определенно не оптимален или не рекомендуется.
Вы можете, однако, проверить, является ли строка, которая является одним символом длиннее другой, является другой строкой с одной добавленной буквой. Для этого вам нужен цикл for, чтобы захватить две подстроки от 0 до i и от i + 1 до конца. Это не учитывает i-й символ, а цикл для размера строки - 1 даст вам сначала полную строку, затем строку без первой буквы, затем пропустят вторую букву и т. Д. Затем проверьте эту подстроку таким же образом, как и мы.
Комментарий, если это не то, что вы ищете.
EDIT
Чтобы увидеть, как много слов в файле, одна буква отличается от переменной слова, вам нужно перебрать файл, получая каждое слово. Тогда тестирование, если это была строка, состояло из одной буквы. Было бы что-то вроде этого:
String testAgainst = "lookingForWordsOneLetterDifferentThanThisString";
int words = 0;
Scanner scan = new Scanner(fileName);
while(scan.hasNext())
{
String word = scan.next();
\t
if(isOneDifferent(word, testAgainst))
{
words++;
}
System.out.println("Number of words one letter different: " + words);
}
public boolean isOneDifferent(String word, String testAgainst)
{
if(word.length() != testAgainst.length())
{
return false;
}
int diffs = 0;
for(int i = 0; i < word.length(); i++)
{
if(word.charAt(i) != testAgainst.charAt(i))
{
diffs++;
}
\t \t
if(diffs > 1)
{
return false;
}
}
if(diffs == 1)
{
return true;
}
else
{
return false;
}
}
Так что же вы спрашиваете? – csmckelvey
Учитывая слово пользователя, в данном случае 'random', я пытаюсь найти текстовый файл с большим количеством слов и посмотреть, отличается ли какое-либо из слов в этом текстовом файле только одним символом' random '. Например; день похож на слова: скажем, луч, плотина, даб и т. д. – user180708
Что вы подразумеваете под «одним измененным персонажем»? Одно удаление, одна вставка или только одно редактирование? – marc