2013-08-16 5 views
0

Я по-прежнему очень новичок в Java и пытаюсь заставить переводчика кода Морзеза работать. Я преодолел первую проблему с различными ошибками, но теперь программа компилирует, но не печатает результаты перевода. Любая помощь будет оценена по достоинству.System.out.println не печатает данные массива

import java.util.Scanner; 

public class MorseCode 
{ 
    public static void main(String[] args) 
    { 
     Scanner Input = new Scanner(System.in); 

     System.out.println("To convert English to Morse Code, type M. To convert Morse Code to English, type E."); 

     String cType = Input.nextLine(); 

     String type = cType.toLowerCase(); 

     if(type == "m") 
     { 
      String eng; 
      System.out.println("Please enter the English text to be translated."); 
      eng = Input.nextLine(); 
      EToM(eng); 
     } 
     else 
     { 
      String morse; 
      System.out.println("Please enter the Morse code text to be translated, with multiple words seperated by a |."); 
      morse = Input.nextLine(); 
      MToE(morse); 
     } 
    } 
    public static void EToM(String eng) 
    { 
     String EToMList[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".--", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "----.", "-----", "|"}; 

     String alphabet = "abcdefghijklmnopqrstuvwxyz123456789 "; 
     String translation[] = new String[eng.length()]; 

     for(int x = 0; x < eng.length(); x++) 
     { 
      for(int y = 0; y < alphabet.length(); y++) 
      { 
       if(eng.charAt(x) == alphabet.charAt(y)) 
       { 
        translation[x] = EToMList[y]; 
        System.out.println("test"); 
       } 
      } 
     } 

     System.out.println("Your translated message is:"); 

     for(int z = 0; z < eng.length(); z++) 
     { 
      System.out.println(translation[z]); 
     } 
    } 

    public static void MToE(String morse) 
    { 

    } 
}  
+0

попробуйте напечатать что-то после того, как вы распечатать содержимое вашего массива, и посмотреть сколько итераций вашего цикла работает –

+1

и используйте equals() вместо == для сравнения String/Object – kosa

+0

Хотя ваш метод сильно неэффективен с точки зрения кодирования, он компилируется и работает отлично ([demo link] (http://ideone.com/UGDpGB)). – dasblinkenlight

ответ

3

Ваша проблема

if(type == "m") 

использование

if("m".equals(type)) 

Ваш if-else пойдет else, потому что вы сравниваете ссылки String, а не значение String. else вызывает метод MToE, который пуст. Прочтите следующее: How Do I compare Strings in Java

+0

Мне кажется, что все, что OP ожидает, произойдет до того, как произойдет печать перевода. Если 'type ==" m "' был проблемой, он даже никогда не распечатывал строки '' test '', которые OP имеет –

+0

@SamIam Я не видел состояние OP, которое было напечатано 'test'. –

+0

Почему OP сообщит вам, что проблема была с «результатами», если есть доказательства отказа до «результатов»? –

0

При проверке строк для равенства в Java всегда используйте метод equals в классе String. Изменение следующее:

if(type == "m") 

в

if(type.equals("m")) 

делает английский Морзе вывод код перевода.

Я сделал эту модификацию и побежал ее успешно только сейчас.

 Смежные вопросы

  • Нет связанных вопросов^_^