Java 摩尔斯电码应用续(gui)
Java morse code application continued (gui)
我有几个关于我的程序的问题。我正在尝试创建一个 java gui 程序,它接受用户输入 (eng),然后将其转换为摩尔斯电码。我需要一次通过输入一个字符的字符。我该怎么做呢?我知道你需要为此使用 charAt(i) 但我真的不明白如何将它应用到这个程序中。另外,我如何将 StringBuilder 转换为字符串,以放入标签中?非常感谢您的宝贵时间。这是我目前所拥有的。
Map<Character,String> charToCode = new HashMap<Character,String>();
charToCode.put('A', ".-");
charToCode.put('B', "-...");
charToCode.put('C', "-.-.");
charToCode.put('D', "-..");
charToCode.put('E', ".");
charToCode.put('F', "..-.");
charToCode.put('G', "--.");
charToCode.put('H', "....");
charToCode.put('I', "....");
charToCode.put('J', ".---");
charToCode.put('K', "-.-");
charToCode.put('L', ".-..");
charToCode.put('M', "--");
charToCode.put('N', "-.");
charToCode.put('O', "---");
charToCode.put('P', ".--.");
charToCode.put('Q', "--.-");
charToCode.put('R', ".-.");
charToCode.put('S', "...");
charToCode.put('T', "-");
charToCode.put('U', "..-");
charToCode.put('V', "...-");
charToCode.put('W', "..-");
charToCode.put('X', "-..-");
charToCode.put('Y', "-.--");
charToCode.put('Z', "--..");
text1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String input = text2.getText();
label.setText(input);
}
});
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String input = text1.getText();
label.setText(charToCode);
}
});
使用 for 循环遍历字符串中的所有字符。对于从 StringBuilder
到 String
的转换: StringBuilder.toString()
returns StringBuilder
.
的内容
public String parseCode(Map<Character , String> morseAlphabet , String input){
StringBuilder morse = new StringBuilder();
//iterate over the indices of all characters in range
for(int i = 0 ; i < input.length() ; i++)
if(morseAlphabet.get(input.charAt(i)) == null)
//the character has no valid representation in morse-alphabet
throw new IllegalArgumentException("unknown sign: \u" + (int) input.charAt(i));
else
//append the correct morsesign to the output
morse.append(morseAlphabet.get(input.charAt(i)));
return morse.toString();
}
对于用户给定的字符串,string
,你将转换为大写以匹配 HashMap 中的字符,并遍历字符。
for (int i = 0; i < string.length(); i++) {
String s = charToCode.get(string.charAt(i));
if (s == null) throw new RuntimeException ("No character found");
mc.append(s).append(' ');
}
要将 StringBuilder mc
转换为字符串,请使用 StringBuilder#toString()
我有几个关于我的程序的问题。我正在尝试创建一个 java gui 程序,它接受用户输入 (eng),然后将其转换为摩尔斯电码。我需要一次通过输入一个字符的字符。我该怎么做呢?我知道你需要为此使用 charAt(i) 但我真的不明白如何将它应用到这个程序中。另外,我如何将 StringBuilder 转换为字符串,以放入标签中?非常感谢您的宝贵时间。这是我目前所拥有的。
Map<Character,String> charToCode = new HashMap<Character,String>();
charToCode.put('A', ".-");
charToCode.put('B', "-...");
charToCode.put('C', "-.-.");
charToCode.put('D', "-..");
charToCode.put('E', ".");
charToCode.put('F', "..-.");
charToCode.put('G', "--.");
charToCode.put('H', "....");
charToCode.put('I', "....");
charToCode.put('J', ".---");
charToCode.put('K', "-.-");
charToCode.put('L', ".-..");
charToCode.put('M', "--");
charToCode.put('N', "-.");
charToCode.put('O', "---");
charToCode.put('P', ".--.");
charToCode.put('Q', "--.-");
charToCode.put('R', ".-.");
charToCode.put('S', "...");
charToCode.put('T', "-");
charToCode.put('U', "..-");
charToCode.put('V', "...-");
charToCode.put('W', "..-");
charToCode.put('X', "-..-");
charToCode.put('Y', "-.--");
charToCode.put('Z', "--..");
text1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String input = text2.getText();
label.setText(input);
}
});
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String input = text1.getText();
label.setText(charToCode);
}
});
使用 for 循环遍历字符串中的所有字符。对于从 StringBuilder
到 String
的转换: StringBuilder.toString()
returns StringBuilder
.
public String parseCode(Map<Character , String> morseAlphabet , String input){
StringBuilder morse = new StringBuilder();
//iterate over the indices of all characters in range
for(int i = 0 ; i < input.length() ; i++)
if(morseAlphabet.get(input.charAt(i)) == null)
//the character has no valid representation in morse-alphabet
throw new IllegalArgumentException("unknown sign: \u" + (int) input.charAt(i));
else
//append the correct morsesign to the output
morse.append(morseAlphabet.get(input.charAt(i)));
return morse.toString();
}
对于用户给定的字符串,string
,你将转换为大写以匹配 HashMap 中的字符,并遍历字符。
for (int i = 0; i < string.length(); i++) {
String s = charToCode.get(string.charAt(i));
if (s == null) throw new RuntimeException ("No character found");
mc.append(s).append(' ');
}
要将 StringBuilder mc
转换为字符串,请使用 StringBuilder#toString()