的所有人。我的摩尔斯电码有问题。我正在尝试将英文消息或“A”之类的文本转换为莫尔斯电码“.-”
但是,我的转换方法有问题。什么时候,我运行我的代码,我得到了回复的信息,但是,我得到了我读到的整个莫尔斯代码。
我的老师告诉我,我需要比较索引,所以我可以打印摩尔斯电码的值。但是,我仍然坚持逻辑。
这是我到目前为止所得到的:
public class MorseCode {
public static ArrayList<String> alpha;
public static ArrayList<String> codes;
/**
* This Constructor actually imports the list of Morse Code Characters and adds it to an ArrayList.
*/
public MorseCode() throws IOException
{
String token = "";
Scanner inFile = new Scanner(new File("morsecode.txt"));
codes = new ArrayList<String>();
codes.add(".-");
codes.add("-...");
codes.add("-.-.");
while(inFile.hasNext())
{
token = inFile.nextLine();
System.out.println(token);
}
inFile.close();
}
public static void alpha () throws IOException
{
Scanner inFile = new Scanner(new File("alphabet.txt"));
String cake = "";
alpha = new ArrayList<String>();
alpha.add("A");
alpha.add("B");
alpha.add("C");
while(inFile.hasNext())
{
cake = inFile.nextLine();
System.out.println(cake);
}
inFile.close();
}
public static ArrayList<String> getMorse()//ArrayList<String> codes
{
ArrayList codes = new ArrayList<String>();
return codes;
}
public static ArrayList<String> getAlpha()//ArrayList<String> alpha
{
ArrayList alpha = new ArrayList<String>();
return alpha;
}
public static void Morse ( String token)
{
for( String m : codes)
{
token = m;
System.out.println(m);
}
}
public static void Alpha(String cake)
{
for( String a : alpha)
{
cake = a;
System.out.println(a);
}
}
public static String convertCode (String myMessage)
{
alpha = new ArrayList<String>();
String myLetter = "";
String cake = "";
int myindex = 0;
for(int index = 0; index < myMessage.length(); index++)
{
myLetter = myMessage.substring(index,index + 1);
for( int in = 0; in < alpha.size(); in++)
{
if(alpha.get(in).equals(myLetter))
{
index = in;
}
cake += codes.get(in);
System.out.println(cake);
}
}
return cake;
}
}
答案 0 :(得分:1)
Doctuer所说的是真的,你似乎经常重置价值。
这个转换函数应该可以工作,它会返回一个字符串(用摩尔斯电码编码)给出一个普通的英文单词。
public static String encodeMessage(String message) {
String encodedMessage = "";
// Loop through the String
for(int i = 0; i < message.length(); i++) {
// Get each Character in String format
String character = String.valueOf(message.charAt(i));
// Look for the index of the Character in the Alphabet List
for(int j = 0; j < alphabet.size(); j++) {
// If we find a match use the Index to get the corresponding Morse Value
if(alphabet.get(j).equals(character)) {
encodedMessage += code.get(j);
// Move onto the next Letter
break;
}
}
}
// Returns only the Encoded Message
return encodedMessage;
}
}