字符串不能转换为int数组和ASCII

时间:2019-04-28 16:53:55

标签: java arrays string integer int

我的ASCII和摩尔斯数组的代码有问题。  只要我知道强制转换是正确的...该代码使用函数和强制转换以拆分每个“ 000000”并将数字转换为字母和单词。我不能完全确定问题出在哪里,但cmd会说:

Morse.java:73: error: incompatible types: String cannot be converted to int
                            return result;
                                   ^
Morse.java:80: error: incompatible types: String cannot be converted to int
                           return result;
                                 ^

2个错误有帮助吗?

public class Morse
{
    public static String decode(String txt)
    {
        String[] words = txt.split("0000000");
        String result = "";
            for(int w=0; w<words.length; w++)
            {
                result += processWord(words[w]);
            }
        return result;
    }

    public static String processWord(String word)
    {
        String[] letter = word.split("000");
        String result = "";
            for(int l=0;l<letter.length;l++)
            {
                result += processChar(letter[l]);
            }
        return result;
    }

    public static int processChar(String letters)
    {
        String[] morseLetters = new String[26];
            morseLetters[0] = "10111"; //A
            morseLetters[1] = "111010101"; //B
            morseLetters[2] = "11101011101"; //C
            morseLetters[3] = "1110101"; //D
            morseLetters[4] = "1"; //E
            morseLetters[5] = "101011101"; //F
            morseLetters[6] = "111011101";//G
            morseLetters[7] = "1010101";//H
            morseLetters[8] = "101"; //I
            morseLetters[9] = "1011101110111";//J
            morseLetters[10] = "111010111";// K
            morseLetters[11] = "1011101010";// L
            morseLetters[12] = "1110111"; //M
            morseLetters[13] = "1110001";//N
            morseLetters[14] = "11101110111"; //O
            morseLetters[15] = "10111011101"; //P
            morseLetters[16] = "1110111010111"; // Q
            morseLetters[17] = "1011101"; // R
            morseLetters[18] = "10101";//S
            morseLetters[19] =  "111"; //T
            morseLetters[20] = "1010111";//U
            morseLetters[21] = "101010111"; // V
            morseLetters[22] = "101110111"; //W
            morseLetters[23] = "11101010111"; // x
            morseLetters[24] = "1110101110111"; // Y
            morseLetters[25] = "11101110101";//Z

        String[] morseNumbers = new String[10];
            morseNumbers[0] ="10111011101110111";
            morseNumbers[1] ="101011101110111";
            morseNumbers[2] ="1010101110111";
            morseNumbers[3] ="10101010111";
            morseNumbers[4] ="101010101";
            morseNumbers[5] ="11101010101";
            morseNumbers[6] ="1110111010101";
            morseNumbers[7] ="111011101110101";
            morseNumbers[8] ="11101110111011101";
            morseNumbers[9] ="1110111011101110111";

        int index = find(letters, morseLetters);
            if(index == -1) // not found Look for it in numbers
            {
                index = find(letters, morseNumbers);
                String result = "";
                result += (char)(index + 48);//convert to number
                return result;
            }
              //did find it
            else
            {     
                String result = "";
                result += (char)(index + 65);
                return result;
            }
    }

    public static int find(String needle, String[] haystack)
    {
        for(int h=0; h<haystack.length; h++)
        {
            if(haystack[h].equals(needle))
            {
                return h;
            }
        }
        return -1; // not found!
    }

    public static void main(String[] args)
    {
        String encoded = 
                "10111010001010101110111000111010100010101011101110000000";
        String decoded = decode(encoded);
        System.out.println(decoded);

    }
}


///My output: 
//Morse.java:73: error: incompatible types: String cannot be converted to int
//                                return result;
//                                       ^
//Morse.java:80: error: incompatible types: String cannot be converted to int
//                                return result;
//                                       ^
//2 errors

1 个答案:

答案 0 :(得分:0)

您的方法processChar被声明为返回int

public static int processChar(String letters) {...}

,在第73和80行中,您尝试返回一个String。您应该更改方法的名称以返回String对象,例如:

public static String processChar(String letters) {...}