当前位置: 首页 > 知识库问答 >
问题:

为什么我的Java莫尔斯电码翻译器给出了错误的输出?

班建义
2023-03-14
import java.util.Scanner;
public static void main ( String [] args )
{

    String [] morse = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", "|"};

    String [] english =  { "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", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " "};

    Scanner input = new Scanner ( System. in );
    System.out.println ( "Enter 1 to translate Morse Code to English or 2 to translate English to Morse Code:");
    int userChoice = input.nextInt();
    String translateMe;

    while (userChoice < 1 || userChoice > 2 ) // Ensures user enters a valid choice
    {
        System.out.println( "Not a valid entry. Enter 1 to translate Morse Code to English or 2 to translate English to Morse Code:");
        userChoice = input.nextInt();
    }

   if (userChoice == 1 )
    {
        System.out.println("Please enter a Morse Code statement to translate. Separate letters with spaces and words with a ' | '" );
        translateMe = input.next();

        String [] morseChar = translateMe.split(" ");

        for( int x = 0; x < morseChar.length; x++)
        {
            String letter = morseChar[ x ];
            for ( int index = 0; index < morse.length; index++ )
            {
                if(morse [ index ].equals(letter))
                {
                    System.out.print(english[ index ]); // Display character at matching index position of English array to show translation
                }
            }
        }

        }

    else
    {
        System.out.println("Please enter an English statement to translate:");
        translateMe = input.next();
        translateMe = translateMe.toLowerCase();

        String [] englishChar = translateMe.split("(?!^)");

        for ( int x = 0; x < englishChar.length; x++)
        {
            String letter = englishChar [ x ];

            for (int index = 0; index < english.length; index++)
            {
                if( english [index].equals( letter ))
                {
                    System.out.print(morse[index] + " "); // Display Morse Code array character at matching index position to show translation
                }

            }
        }

    }

}

及其对应的莫尔斯电码

----….

作为测试用语。当我用这个短语把英语翻译成莫尔斯电码时,我得到了

共有1个答案

胡承载
2023-03-14

由于使用扫描仪,从莫尔斯到英语的翻译不起作用。您需要使用nextLine(),如下所示:

if (userChoice == 1 )
{
    translateMe = input.nextLine();
    System.out.println("Please enter a Morse Code statement to translate. Separate letters with spaces and words with a ' | '" );
    translateMe = input.nextLine();

之后,它似乎可以很好地翻译,即使使用split命令也是如此。

产出:

[.-, -..., -.-.]
abc
Please enter a Morse Code statement to translate. Separate letters with spaces and words with a ' | '
- --- | -... .
[-, ---, |, -..., .]
to be
 类似资料:
  • 我正在为我的编程介绍课编写一个简单的莫尔斯电码翻译器。这是一个非常简单的设计基础上的技术,我已经教。 这个程序工作于单个字符转换,但不能做单词或句子。我认为问题与末尾的语句有关,但我不知道如何打印整个翻译文本。

  • 到目前为止,这是我的代码(是的,它是法语的,因为我在一个讲法语的省份和学校,所以如果你需要澄清我的代码,请告诉我): 所以是啊,对不起我的英语如果它不是那么好

  • 我必须创建莫尔斯到英语,反之亦然的翻译。英语到morse部分工作,但每当我试图用morse输入一些东西时,它会给我一个ArrayIndexOutofBounds异常,我被如何修复它所困扰。我已经放入了一个分裂函数,但我只是不确定为什么我会得到异常。

  • 给定一个0和1的数组,我们最多可以将K个值从0更改为1。 返回仅包含1的最长(连续)子数组的长度。 例1: 例2: 注: https://leetcode.com/problems/max-consecutive-ones-iii/ 这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?

  • 我试图根据用户使用calandar类输入的日期来确定一天是否是周末。但是当我打印出当天的值时,我得到了不正确的输出。 这是我的代码: 但是输出