Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我是Java编程语言的新手,我正在从事的项目之一是Java莫尔斯电码翻译器(莫尔斯英语至英语,反之亦然)。以下是一种将英语字符串转换为莫尔斯电码的方法。
在某些情况下,该程序可以正常工作:如果我输入“ a”,它将正确返回“ .-”,但在其他情况下,它将无法正常工作。有小费吗?
根据您的需求,实现它的方式是错误的。它实际上工作正常,但它显示的摩尔斯数值按字母顺序排序。如果输入为“ abc”,则输出将是正确的,因为输入已按字母顺序排序。但是,如果输入为“ cab”,则在莫尔斯语中输入同样为“ abc”。
基本上,您偏离了字母数组的第一个字符,并检查了输入中的任何字符是否等于该第一个字母的字符,依此类推。因此,例如,如果输入中有一个“ a”,无论该“ a”在该词中位于何处,由于它是第一个被检查的字母,因此始终将其显示在第一个位置。
因此,如果按照我的方式进行操作,您将偏离输入中的第一个字符,并查看该字符在Alphabet内的位置。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我是Java编程语言的新手,我正在从事的项目之一是Java莫尔斯电码翻译器(莫尔斯英语至英语,反之亦然)。以下是一种将英语字符串转换为莫尔斯电码的方法。
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 < Alphabet.length; i ++){
for (int j = 0; j < str.length(); j ++){
if (Alphabet[i] == (str.charAt(j))){
System.out.print(MorseCode[i] + " ");
}
}
}
}
在某些情况下,该程序可以正常工作:如果我输入“ a”,它将正确返回“ .-”,但在其他情况下,它将无法正常工作。有小费吗?
最佳答案
您的for循环顺序不正确。将循环更改为此:
for (int i = 0; i < input.length(); i ++){ //in your code, this is the inner for and it should be the outer one as it is here
for(int j = 0; j < Alphabet.length; j++){ //same for this one
if(input.charAt(i) == Alphabet[j]){
System.out.print(MorseCode[j] + " || ");
}//end if
}//end inner for
}//end outer for
根据您的需求,实现它的方式是错误的。它实际上工作正常,但它显示的摩尔斯数值按字母顺序排序。如果输入为“ abc”,则输出将是正确的,因为输入已按字母顺序排序。但是,如果输入为“ cab”,则在莫尔斯语中输入同样为“ abc”。
基本上,您偏离了字母数组的第一个字符,并检查了输入中的任何字符是否等于该第一个字母的字符,依此类推。因此,例如,如果输入中有一个“ a”,无论该“ a”在该词中位于何处,由于它是第一个被检查的字母,因此始终将其显示在第一个位置。
因此,如果按照我的方式进行操作,您将偏离输入中的第一个字符,并查看该字符在Alphabet内的位置。
关于java - Java摩尔斯电码翻译器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35530754/
10-09 21:03