アルファベットの文字列をモールス信号に変換するプログラムを書いています。
A = .-
B = -...
c = -.-.
のように、それぞれのアルファベットに対応したStringが格納されているmorse.csvファイルがあります。
例えば"ABC"と入力すると、".- -... -.-." と、期待通りの出力が得られるのですが。
"CBA"と入力すると"-.-."と、Cのみ変換されてBとAが上手く変換されません。
ローカルのフィールドが3つあり、
コンストラクタに加えてメソッドが2つあります。
encodeWordで文字を1つずつencodeCharに渡してそこでエンコードしています。
コードは以下のようになっています。
java
1private String record; 2private Scanner indy; 3private Scanner reader; 4 5public MorseEncoder(String characterMapFile) 6{ 7 try 8 { 9 indy = new Scanner(new File(morse.csv)); 10 } 11 catch (FileNotFoundException fnfe) 12 { 13 System.out.println("The file was not found!"); 14 } 15} 16 17@SuppressWarnings("resource") 18public String encodeChar(char plainChar) 19{ 20 System.out.println(plainChar + " arrived"); 21 try 22 { 23 String alphabet = ""; 24 while (indy.hasNextLine()) 25 { 26 record = indy.nextLine(); 27 reader = new Scanner(record); 28 alphabet = reader.next(); 29 30 if (alphabet.charAt(0) == Character.toUpperCase(plainChar)) 31 { 32 return alphabet.substring(2); 33 } 34 } 35 indy.close(); 36 } 37 catch (InvalidCharacterException ice) 38 { 39 System.out.println("The character is invalid!"); 40 } 41 return ""; 42} 43 44public String encodeWord(String plainWord) 45{ 46 String encoded = ""; 47 try 48 { 49 for (int i = 0; i < plainWord.length(); i++) 50 { 51 char plainChar = plainWord.charAt(i); 52 encoded += encodeChar(plainChar); 53 if (i < plainWord.length() - 1) 54 { 55 encoded += " "; 56 } 57 } 58 } 59 catch (InvalidCharacterException ice) 60 { 61 System.out.println("The character is invalid!"); 62 } 63 return encoded; 64 } 65}
ご教授お願いします。
回答2件
あなたの回答
tips
プレビュー