有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将for循环与字符串数组相对应?

Possible Duplicate:
How do I compare strings in Java?

我有一个String数组,该数组称为Morse

private final static String[] Morse = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
    "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-",  ".-.", "...", "-", "..-",
    "...-" ,".--" ,"-..-", "-.--", "--..",".-.-.-","--..--","..--.." ,"|"};

private final static String[] Colours = {"red","green","white"};

然后是我的代码:

char[] stringArray;
stringArray = converttoMorse(letter).toCharArray();

char ch;

for(int i=0;i<stringArray.length;++i)
{
    if(stringArray[i]== "." ) //Problem here
    {
        System.out.println(Colours[0]);
    }
    else if (stringArray[i] == "-" ) //Problem here
    {
        System.out.println(Colours[1]);
    }
    else
    {
        System.out.println(Colours[2]);
    }
}

这只是我实际程序的一小部分,英语对摩尔斯电文的翻译非常完美。但是,我想将点和破折号分别表示为颜色“红色”和“绿色”作为字符串(空格表示白色)

我使用toCharArray()方法将打印的结果Morse分解为一个数组。然而,我无法将这些点和破折号中的每一个对应到它们的特定颜色。例如,我希望".-"显示为"red green"。我该怎么做?有没有具体的方法


共 (3) 个答案

  1. # 1 楼答案

    不要使用==来比较字符串:see here

  2. # 2 楼答案

    因为stringArray是一个char[],所以需要将它的内容与char进行比较

    你需要:

    if (stringArray[i] == '.') 
    // '.' is the dot character,
    // "." is a String that contains only the dot character 
    

    如果要比较字符串,应阅读以下问题:How do I compare strings in Java?

  3. # 3 楼答案

    在我看来,你有一个String[],你希望结果是一个String[],表示红绿色。为此,我们将使用一些正则表达式和一个外部方法。我甚至不想弄乱char数组,因为从这个数组到字符串数组就不那么简单了

    注意:这假定数组中没有元素是null,否则肯定会爆炸。您可以在replaceAll之前执行一个简单的空检查来缓解这种情况

    public static String[] convertToRedGreen() {
        // Since the array we want is static, our method is too.
        String[] redGreen = new String[Morse.length];
        for(int i = 0; i < Morse.length; i++) {
            redGreen[i] = Morse[i].replaceAll("[.]", " red ").replaceAll("[-]", " green ");
        }
        return redGreen;
    }
    

    这将给您一个String[],看起来像这样

    [ red  green ,  green  red  red  red ,  green  red  green  red ,  green  red  red ,  red ,  red  red  green  red ,  green  green  red ,  red  red  red  red ,  red  red ,  red  green  green  green ,  green  red  green ,  red  green  red  red ,  green  green ,  green  red ,  green  green  green ,  red  green  green  red ,  green  green  red  green ,  red  green  red ,  red  red  red ,  green ,  red  red  green ,  red  red  red  green ,  red  green  green ,  green  red  red  green ,  green  red  green  green ,  green  green  red  red ,  red  green  red  green  red  green ,  green  green  red  red  green  green ,  red  red  green  green  red  red , |]