Я искал другие примеры в StackOverflow, которые могли бы ответить на мой вопрос, но ни один из ответов в других вопросах не касался цикла вложенных циклов. Я делаю код переводчик Морзе, а сама программа работает нормально, если я это сделать:Проблема с возвратом строки из вложенного цикла
public static void StringtoMorse(String str){
char Alphabet [] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '};
String MorseCode [] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "|"};
for (int i = 0; i < str.length(); i ++){
for (int j = 0; j < Alphabet.length; j ++){
if (str.charAt(i) == Alphabet[j]){
System.out.print(MorseCode[j] + " ");
}
}
}
}
Но я хочу, чтобы сделать метод так, что он возвращает строку (Азбука Морзе [J] + "«) , Так вот как я отредактировал свой метод для этого:
public static String StringtoMorse(String str){
char Alphabet [] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '};
String MorseCode [] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "|"};
for (int i = 0; i < str.length(); i ++){
for (int j = 0; j < Alphabet.length; j ++){
if (str.charAt(i) == Alphabet[j]){
return(MorseCode[j] + " ");
}
}
}
}
Но это приводит к ошибке компиляции. Ошибка говорит: «Этот метод должен возвращать результат типа String», но я думал, что (MorseCode [j] + «») является строковым типом. Я знаю, что MorseCode [j] должен быть строкой, потому что я определил MorseCode как массив String.
Если я использую первый метод (с помощью метода System.out.println()), он правильно возвращает результат.
Ну что возвращает код код Морзе каждого символа во входной строке. Он работает на выходе. Но спасибо за отзывы. Что именно делает метод возврата null? – LightFlicker
@LightFlicker Код возвращает только код Морзе первого символа входной строки, который появляется в массиве Алфавит. Возвращаемое значение null возвращает значение по умолчанию, если нет возвращаемого кода Морзе (вы также можете вернуть пустую строку, если хотите) - например, если 'str' является пустой строкой. – Eran
В вашем ответе вы сказали morse.append (MorseCode [str.charAt (i) - 'a']); Но str.charAt (i) - 'a' вернет строку, не так ли? Итак, как это может быть указателем термина в MorseCode? – LightFlicker