Я делаю чат-бота, который ответит вам по ближайшему значению в наборе данных (древовидные карты). Система является аналогом AIML.
Мне нужно сделать таблицу Винклера, которая даст мне массив чисел результата. Как это сделать?
Вот изображение, показывающее, как работает эта таблица:

Извините, изменил.
Это кажется очевидным. На каком этапе у вас проблема? Можете показать, что пробовали?
Я просто не знаю, как это сделать, и отправьте запрос здесь, чтобы получить решение.
Поскольку это довольно тривиальный вопрос для любого java-программиста, ясно, что OP вообще не знает никакого java. Я по крайней мере дал несколько указателей, не написав код на самом деле.




Вы можете сделать это за 3 простых шага.
Создайте двумерный массив для матрицы результатов: см. вопрос Синтаксис для создания двумерного массива.
Размеры, конечно же, должны соответствовать длине ввода и ключа. См. https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#length ().
Перебирайте символы входной строки и ключа как вложенный цикл. См. https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.1 и https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#charAt(int). В основном у вас есть 2 индекса, которые дают вам 2 значения char.
Сравните оба символа с помощью оператора == и сохраните 0 или 1 в двумерном массиве с помощью индексов.
Спасибо, попробую использовать.
Хорошо, я сделал этот стол. Это выглядит так:
String[] ts = new String[s2.length()];
int[][] table = new int[s1.length()][s2.length()];
char[] s1c = s1.toCharArray();
char[] s2c = s2.toCharArray();
for(int s1cl = 0; s1cl <= s1c.length - 1; s1cl++) {
for(int s2cl = 0; s2cl <= s2c.length - 1; s2cl++) {
if (s1c[s1cl] == s2c[s2cl]) {
table[s1cl][s2cl] = 0;
} else {
table[s1cl][s2cl] = 1;
}
}
}
for(int ts1 = 0; ts1 <= s1c.length - 1; ts1++) {
String res = "";
for(int ts2 = 0; ts2 <= s2c.length - 1; ts2++) {
res += ts2;
if (ts2 == s2c.length - 1) {
ts[ts1] = res;
res = "";
}
}
}
Спасибо "herman" за ответ!
Вы забыли задать вопрос.