我对Java很陌生,而且我在使用数组时遇到了麻烦。这是我现在的代码。
String english = "hip-hop";
String[] words = english.split ("[\\s+]|(?<=-)|(?=-)");
String[] latin = new String [words.length];
String phrase = "";
for (int i = 0 ; i < words.length ; i++)
{
int k;
k = words.length - 1;
latin [i] = words [i]; //stays the same
if ((words [i].charAt (0) == '-') || (words [k].equals("-") == true)) //PROBLEM RIGHT HERE
{
phrase = phrase + latin [i]; //add latin to previous phrase
}
else
{
phrase = phrase + " " + latin [i]; //add latin to previous phrase
}
}
System.out.println (phrase);
所以这个节目的输出是:hip-hop
正确的输出应该是:hip-hop
我知道打破嘻哈然后重新组合它似乎毫无意义,但这对我正在创造的猪拉丁翻译来说是一件小事。
这里的代码正确编译。
我创建了int k,这样如果数组中的前一个单词等于&#34; - &#34;,那么当latin被添加到短语中时,就不会出现空格。
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
您永远不会更新k
的值,因此前一个单词的检测等于-
将永远不会评估为true
。相反,只需使用变量来跟踪前一个单词。
String english = "hip-hop";
String[] words = english.split("[\\s+]|(?<=-)|(?=-)");
String[] latin = new String[words.length];
String phrase = "";
String previousWord = "";
for (int i = 0; i < words.length; i++) {
latin[i] = words[i];
if (words[i].equals("-") || previousWord.equals("-")) {
phrase = phrase + latin[i];
} else {
phrase = phrase + " " + latin[i];
}
previousWord = words[i];
}
System.out.println(phrase);