我不明白为什么这个方法不起作用。它会编译,但会引发运行时错误。
import java.util.*;
public class OinkerSpine
{
public ArrayList<String> pigLatin (String phrase)
{
phrase = phrase.replaceAll(".", " .");
phrase = phrase.replaceAll(",", " ,");
phrase = phrase.replaceAll("!", " !");
//phrase = phrase.replaceAll("?", " ?");
phrase = phrase.replaceAll("'", " '");
String []words = phrase.split(" ");
ArrayList <String> Endphrase = new ArrayList <String> ();
final String AY = "ay";
final String YAY = "-yay";
String endword = "";
for(int i=0; i < words.length; i++)
{
String firstletter;
String restofword;
String secondletter;
if (words[i].length() == 1)
{
firstletter = words[i];
restofword = "";
}
else
{
firstletter = words[i].substring(0, 1);
restofword = words[i].substring(1);
}
boolean firstIsUpper = (firstletter.equals(firstletter.toUpperCase()));
if (firstIsUpper)
{
firstletter = firstletter.toLowerCase();
secondletter = restofword.substring(0, 1);
restofword = restofword.substring(1);
secondletter = secondletter.toUpperCase();
restofword = secondletter + restofword;
}
if (firstletter.equals("a") || firstletter.equals("e") ||
firstletter.equals("i") || firstletter.equals("o") ||
firstletter.equals("u"))
{
endword = firstletter + restofword + YAY;
}
else
{
endword = restofword + "-" + firstletter + AY;
}
endword = endword.replaceAll(" .", ".");
endword = endword.replaceAll(" ,", ",");
endword = endword.replaceAll(" !", "!");
//endword = endword.replaceAll(" ?", "?");
endword = endword.replaceAll(" '", "'");
Endphrase.add(endword);
}
return Endphrase;
}
}
如果restofword
或word[i]
是空字符串,将会发生什么
secondletter = restofword.substring(0, 1);
或
firstletter = words[i].substring(0, 1);
固定的: 我删除了while循环并添加了 我正在尝试向一个单词中随机添加一个额外的字母副本(介于0-8之间)。实例does可能会变成dooee或doess。 我的函数有时会工作,但总是会因越界索引错误而崩溃。 我假设我需要在某个时刻检查ArrayList中的空值。我试着用和if来包装我的while语句,以检查它,但没有任何改进。有什么建议吗?
我编写了这段代码,将整个以10为基数的数字转换成二进制。我相信代码就是它所需要的一切,但我无法让工作。 我在这个网站和其他网站上花了几个小时,尝试了无数次的修改,但都没有用。 我已经让代码无错误地编译,但一旦我运行它并输入程序就会崩溃。 下面是代码: 这些是java在我输入数字时抛出的异常。 我希望这是足够的信息。
我犯的错误 我的密码 我试图将数组的最后5个元素存储在temp 2中。那我就换了。有更简单的方法吗?将数组的前五个元素与后五个元素切换?你会如何用for循环切换它们?
所以基本上我应该做的是,我应该得到一个字符串的数组列表,用两个字符串填充它,然后比较它们。例如,如果一个字符串是“1,2,3,4”,第二个字符串是“7,6,2,8,1”,那么它应该打印出“1,2”,因为它打印出的数字相似。但我遇到了和arrayindexoutofbounds异常,我不知道如何修复它。此外,如果你有任何可能缩短此代码的提示,也请告诉我。我有一个习惯,让我的代码超长。
问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥
CodeWars告诉我在第15行有一个索引出界错误。但是这是没有意义的,因为当我在IDE中测试它时,一切都可以完美地工作。