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"
。我该怎么做?有没有具体的方法
# 1 楼答案
不要使用==来比较字符串:see here
# 2 楼答案
因为
stringArray
是一个char[]
,所以需要将它的内容与char
进行比较你需要:
如果要比较字符串,应阅读以下问题:How do I compare strings in Java?
# 3 楼答案
在我看来,你有一个
String[]
,你希望结果是一个String[]
,表示红绿色。为此,我们将使用一些正则表达式和一个外部方法。我甚至不想弄乱char数组,因为从这个数组到字符串数组就不那么简单了注意:这假定数组中没有元素是
null
,否则肯定会爆炸。您可以在replaceAll
之前执行一个简单的空检查来缓解这种情况这将给您一个
String[]
,看起来像这样