摩尔斯电码翻译的值始终返回null,我已尽力解决了该问题。我们仅限于在此分配上使用数组。我该怎么做才能纠正它?

import javax.swing.JOptionPane;
import java.util.*;
import java.io.*;

public class morseCodeTest
{
    public static void main(String[] args)throws IOException
    {
        String userInput;
        final String SENTINEL = "0";//for exiting program when entered

        //object creation
        Translate text = new Translate();

        //getting user input to be translated
        do
        {
            userInput = JOptionPane.showInputDialog("Please enter what you wish to translte to Morse code (no punctuation).");
            String compare = userInput.toUpperCase();
            String[] codedText = new String[compare.length()];

            codedText = text.translateHere(compare);
            text.toString(userInput, codedText);
        }while(!userInput.equals(SENTINEL));
    }//end main
}//end class

class Translate
{
    public Translate()
    {
    }//end default constructor

    public String[] translateHere(String s)throws IOException
    {
        String compare = s, codedLine = "";  //userInput toUpperCase
        int length = compare.length();  //length of userInput
        String line, file = "Morse.txt";// variable holding file name and variable for each letter/number
        char code;

        //Constants
        final int MAX = 36;

        //Arrays
        char[] morseLetter = new char[MAX];
        String[] morseCode = new String[MAX];
        String[] newMessage = new String[length];

        //putting user input in a character array;
        char[] userLetters = compare.toCharArray();

        //object creation
        File openFile = new File(file);
        Scanner inFile = new Scanner(openFile);

        //for loop that will read data from the Morse.txt file
        for(int i = 0; i < MAX; i++)
        {
            while(inFile.hasNext())
            {
                line = inFile.next();
                code = (char)line.charAt(0);
                morseLetter[i] = code;
                morseCode[i] = inFile.next();
            }//end nested while loop
        }//end for loop

        for(int j = 0; j < length; j++)
        {
            for(int k = 0; k < MAX; k++)
            {
                if(userLetters[j] == morseLetter[k])
                {
                    newMessage[j] = morseCode[k];
                }
            }//end nested for loop
        }//end for loop
        return newMessage;
    }//end method that completes translateion

    public String toString(String a, String[] b)
    {
        String input = a;
        String[] coded = b;
        String[] encoded = new String[input.length()];
        //JOptionPane.showMessageDialog(null, "Original Text: " + input + "\nCoded Text: " + coded);
        for(int l = 0; l <input.length(); l++)
        {
            encoded[l] = coded[l];
        }
        String str = "";
        System.out.print(Arrays.toString(encoded));
        return str;
    }//end toString method
}//end Translate Class


摩尔斯电码文本文件包含以下内容:

1 .----

2 ..---

3 ...--

4 ....-

5 .....

6 -....

7 --...

8-..

9 ----。

0 -----

一种 。-

B -...

C -。-。

D-..

E.

F ..-。

G - 。

H ....

一世 ..

J .--

钾-.-

L ...

M-

N-

O-

P .--。

问--.-

R .-。

S ...

T-

U ..-

V ...-

W-

X -..-

是-.--

Z-..

最佳答案

您的Translate.toString方法将始终返回一个空字符串,因为这是您分配给str变量的唯一内容。

10-07 20:48