如何将for循环与String数组对应?

时间:2013-01-27 21:18:35

标签: java arrays string

  

可能重复:
  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 个答案:

答案 0 :(得分:4)

由于stringArraychar[],您需要将其内容与char进行比较。

你需要:

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

如果你想比较字符串,你应该阅读这个问题:How do I compare strings in Java?

答案 1 :(得分:0)

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

注意:这假设您的数组中没有元素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 , |]

答案 2 :(得分:-1)

请勿使用==来比较字符串:see here