gpt4 book ai didi

java - 莫尔斯电码到英语/英语到莫尔斯电码转换器

转载 作者:行者123 更新时间:2023-12-01 13:40:16 25 4
gpt4 key购买 nike

嗨,我正在尝试制作一个 Java 程序,将英语翻译成摩尔斯电码,反之亦然。基本上我很难让所有东西变得兼容..以及如何使用替换所有方法来将所有输入的变量替换为与莫尔斯索引相对应的变量。我并不是想走捷径。我真的很努力,想完成这件事。非常感谢!

    import java.util.Scanner;

public class ProjMorse
{
public static void main( String [] args )
{
Scanner input = new Scanner(System.in);
String [] alpha = {"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","1","2","3","4","5","6","7","8","9","0"," "};
String [] dottie = {".-", "-...", "-.-.", "-..", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", "-----", "|"};
System.out.println("To convert from English to Morse enter English");
String ans = input.nextLine();
if(ans.equals("English"))
{
System.out.println( "Please enter the text you would like to convert to Morse Code: ");
String English = input.nextLine();
char[] translates = (English.toLowerCase()).toCharArray();

for (int i = 0; i < alpha.length; i++)
{
String s = translates[i].replaceAll('i', (dottie[i]));
}
String s = new String(dottie[i]);
System.out.println(s);
}
else
{
System.out.println( "Please enter the text you would like to convert to English (separate words with '|'):");
String code = input.nextLine();
String[] translates = code.split("[|]", 0);

for (int j = 0; j < dottie.length; j++)
{
alpha[j] = String.valueOf(translates[j]);
}
String s = new String(alpha[j]);
System.out.println(s);
}
}
}

最佳答案

  for (int i = 0; i < alpha.length; i++)
{
String s = translates[i].replaceAll('i', (dottie[i]));
}

这行不通,您要做的是逐步遍历要翻译的字符串的每个字符(您已将其转换为字符数组)并执行字母 ' 的 replaceAll 实例i' 与莫尔斯电码字母表中的相对索引。 replaceAll 是 String 类的一个方法,这不起作用。

如果您没有将其转换为字符数组,则可以对包含 alpha 中的字符的明文字符串以及 dottie< 中的每个项目执行 replaceAll/

 int characterIndex = 0;
for (char c : alpha)
{
plaintextString.replaceAll(c, dottie[characterIndex]);
characterIndex++;
}

另外...

首先,如果你问一个问题,它应该包含一个问题,带有问号和所有内容。这样我们就知道我们在回答什么。如果出现错误,您需要说明错误是什么。您还需要更好地格式化代码,这真的很难阅读......

现在,请注意您的代码,不要尝试用一种方法完成所有操作,它很丑陋且难以阅读和调试。方法应该做一件事(而不是多件事,比如获取用户输入、翻译、输出)并且做得很好。其背后的原因是,如果您可以在一个屏幕上阅读整个内容,则可以更好更快地理解方法的目的。

此外,变量应以小写字母开头,因此这可能会令人困惑:-

String English = input.nextLine();

关于java - 莫尔斯电码到英语/英语到莫尔斯电码转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com