gpt4 book ai didi

java - 数组未在莫尔斯电码程序上打印

转载 作者:行者123 更新时间:2023-11-30 04:16:20 24 4
gpt4 key购买 nike

我对 java 很陌生,并且我的莫尔斯电码程序遇到了问题。请耐心等待,但是当输入要从莫尔斯电码翻译成英语的文本时,它只会打印 null 来代替字母。任何帮助将不胜感激。

import java.util.Scanner;

public class MorseCode
{
public static void main(String[] args)
{
Scanner Input = new Scanner(System.in);

System.out.println("To convert English to Morse Code, type M. To convert Morse Code to English, type E.");

String cType = Input.nextLine();

String type = cType.toLowerCase();

if("m".equals(type))
{
String eng;
System.out.println("Please enter the English text to be translated.");
eng = Input.nextLine();
EToM(eng);
}
else
{
String morse;
System.out.println("Please enter the Morse code text to be translated, with multiple words seperated by a |.");
morse = Input.nextLine();
MToE(morse);
}
}
public static void EToM(String eng)
{
String EToMList[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".--", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "----.", "-----", "|"};
String alphabet = "abcdefghijklmnopqrstuvwxyz123456789 ";
String translation[] = new String[eng.length()];

for(int x = 0; x < eng.length(); x++)
{
for(int y = 0; y < alphabet.length(); y++)
{
if(eng.charAt(x) == alphabet.charAt(y))
{
translation[x] = EToMList[y];
}
}
}

System.out.println("Your translated message is:");

for(int z = 0; z < eng.length(); z++)
{
System.out.println(translation[z]);
}
}

public static void MToE(String morse)
{
int arraySize = 0;
String MToEList[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".--", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "----.", "-----", "|"};
String alphabet = "abcdefghijklmnopqrstuvwxyz123456789 ";
char space = '|';

for(int x = 0; x < morse.length(); x++)
{
if(morse.charAt(x) == space)
{
arraySize += 1;
}
}

String segmentedMessage[] = new String[arraySize];
String translation[] = new String[arraySize];

int a = 1;
int counter = 0;

for(int y = 0; y < morse.length(); y++)
{
if(morse.charAt(y) == space)
{
segmentedMessage[counter] = morse.substring((a - 1), (y + 1));
a = y;
}
}

for(int z = 0; z < segmentedMessage.length; z++)
{
for(int i = 0; i < alphabet.length(); i++)
{
if(segmentedMessage[z] == MToEList[i])
{
translation[z] = alphabet.substring(i - 1, i + 1);
}
}
}

System.out.println("Your translated message is:");

for(int j = 0; j < translation.length; j++)
{
System.out.println(translation[j]);
}
}
}

最佳答案

我认为你的问题出在线上

if(segmentedMessage[z] == MToEList[i])

前面您正在比较 char 类型,char 是一种原始类型,这意味着您可以使用 == 来安全地比较值。在我提到的行中,您正在比较字符串类型。 String是一个java对象。

所有 Java 对象都应该使用 .compare 而不是 ==

示例

char char1 = 'c';
char char2 = 'c';
char1 == char2 // true!

String str1 = "c";
String str2 = "c";
str1 == str2 // not always going to be true, even tho it would seem that way
str1.equals(str2) // true!

关于java - 数组未在莫尔斯电码程序上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279609/

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