-1

このプロジェクトでは、モールス信号を英語に、英語をモールス信号に変換するプログラムを作成します。プログラムは、希望する翻訳の種類を指定するようにユーザーに促し、モールス符号文字または英語文字の文字列を入力してから、翻訳結果を表示する必要があります。

モールス符号を入力するときは、各文字/数字を 1 つのスペースで区切り、複数の単語を「|」で区切ります。たとえば、 --- | -… . 文「to be」のモールス符号入力になります。プログラムは 1 つの文を処理するだけでよく、句読点記号は無視できます。

英語を入力するときは、各単語を空白で区切ります。

if ( Morse [ m ] == b.charAt ( m ) ) 行で、比較できない型: String and char エラーが発生しています。これを修正する方法についてのアイデアはありますか? ありがとう!

public class project {

public static void main ( String [] args ) {

char [] 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', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };

String [] Morse = { ".-" , "-..." , "-.-." , "-.." , "." , "..-." , "--." , "...." , ".." , ".---" , "-.-" , ".-.." , "--" , "-." , "---" , ".--." , "--.-" ,  ".-." , "..." , "-" , "..-" , "...-" , ".--" , "-..-" , "-.--" , "--.." , "|" };
    String a = Input.getString ( "Please enter \"MC\" if you want to translate Morse Code into English, or \"Eng\" if you want to translate from English into Morse Code" );

    if ( a == "MC" )
    {
        String b = Input.getString ( "Please enter a sentence in Morse Code. Separate each letter/digit with a single space and delimit multiple words with a | ." );

        for ( int x = 0; x < Morse.length; x++ )
        {
            for ( int m = 0; m < b.length (); m++ )
            {
                if ( Morse [ m ] == b.charAt ( m ) )

                System.out.print ( English [ m ] + " " );

            }

        }

    }

    else if ( a == "Eng" )
    {
        String c = Input.getString ( "Please enter a sentence in English, and separate each word with a blank space." );

        c = c.toLowerCase ();

        for ( int x = 0; x < English.length; x++ )
        {
            for ( int y = 0; y < c.length (); y++ )
            {
                if ( English [ x ] == c.charAt ( y ) )

                System.out.print ( Morse [ x ] + " " );


            }

        }


    }

    else 
    {
        System.out.println ( "Invalid Input" );

    }

}

}

4

1 に答える 1

2

モールス信号の入力が繰り返されるこのコードは、あなたが思っていることをしていません。ユーザーに区切り記号を使用して複数の文字シーケンスを入力するように求めているにもかかわらず、個々の文字を引き出す文字列を繰り返し処理しています。

if ( a == "MC" )
    {
        String b = Input.getString ( "Please enter a sentence in Morse Code. Separate each letter/digit with a single space and delimit multiple words with a | ." );    

        for ( int x = 0; x < Morse.length; x++ )
        {
            for ( int m = 0; m < b.length (); m++ )
            {
                if ( Morse [ m ] == b.charAt ( m ) )    
                System.out.print ( English [ m ] + " " );    
            }    
        }    
    }

別のモールス信号を実際にループするように変更します

if (a.equals("MC"))
    {
        String b = Input.getString ("Please enter a sentence in Morse Code. Separate each letter/digit with a single space and delimit multiple words with a | .");    

        String[] words = b.split("|");
        for (String word: words )
        {
            String[] characters = word.split(" ");
            for (String character: characters) 
            {
                if (character.isEmpty()) { continue; }
                for (int m = 0; m < b.length(); m++)
                {
                    if (character.equals(inputMorseCode[m])))    //This line is no longer failing because a string is being compared to a string
                        System.out.print(English[ m ]);    
                }    
            }
            System.out.print(" ");    
        }    
    }

また、Java == では、文字列が同じオブジェクト参照であるかどうかを比較します。.equals()値が同じかどうかを確認するために使用します。この質問を参照してください

于 2014-08-23T01:33:10.197 に答える