Мой переводчик азбуки Морзе не может определить, соответствует ли символ во введенной строке соответствующему элементу массива по умолчанию
public static String morseToEng(String userInput)
{
String[] userMorse = userInput.split("\\s+");
String userString = "";
for (int i = 0; i < userMorse.length; i++)
{
for (int q = 0; q < morse.length; q++)
{
if (morse[q] == userMorse[i])
{
userString += english[q] + " ";
}
else if (morse[q] == "|")
{
userString += " ";
}
}
}
return userString;
}
morse[ ] - это массив символов азбуки Морзе, которые соответствуют english[ ], то есть словарю символов английского алфавита (по порядку, конечно). Моя проблема в том, что, хотя есть случаи, в которых morse[q] == userMorse[i], программа не регистрирует его и всякий раз, когда я выполняю полную программу, а userString выходит в качестве своего инициализированного значения, которое просто "" (ничего такого). Я проверил отладчик, и функция userInput.split работает нормально, и userMorse действительно получается как массив входных символов кода Морзе в порядке. Что я здесь не так делаю? зеркальный метод с английского на азбуку Морзе работает отлично:
public static String engToMorse(String userInput)
{
char[] userChars = userInput.toCharArray();
String userString = "";
for (int i = 0; i < userChars.length; i++)
{
for (int q = 0; q < english.length; q++)
{
if (english[q] == userChars[i])
{
userString += morse[q] + " ";
}
}
}
return userString;
}
1 ответ
Как отметил в комментариях Маркос Васконселос .equals
сравнивать объекты вместо ==
, Это связано с тем, что в Java ==
сравнивает адрес памяти объекта, в отличие от примитивных значений, в которых он сравнивает значения, поэтому я думаю, что второй блок кода, который вы дали, работает нормально. .equals
метод, когда переопределить с помощью класса, как String
, вместо этого будет сравнивать значения, содержащиеся в объекте.
Поэтому я бы предложил либо изменить переменную userMorse на тип char, либо использовать метод сравнения для решения вашей проблемы в зависимости от необходимой функциональности программы.