【发布时间】:2020-11-20 13:50:02
【问题描述】:
我尝试了 CharacterIterator 并且 Switch 语句工作正常,只要我尝试在 case 中添加 If 语句,因为它没有显示任何内容。你能告诉我我的错误在哪里吗?
StringBuilder sb = new StringBuilder(input);
CharacterIterator it= new StringCharacterIterator(input);{
for(char ch = it.first(); ch!= CharacterIterator.DONE; ch = it.next()) {
switch(ch) {
case 'E':
sb.append("S");
break;
case 'n':
sb.append("O");
break;
case 'g':
sb.append("L");
break;
case 'a':
sb.append(".");
break;
case 'i':
if(it.previous() == ' ') {
sb.append("ai");
break;
}
break;
case ' ':
sb.append(" ");
break;
} } }
这是我的代码。 “Engine”的输出应该是“SOLai”,我尝试检查字符“i”是否在单词的开头或其他位置。所以如果它在开始时我的输出将用“ai”替换“i”,如果不是它应该删除它。
【问题讨论】:
-
每次调用
it.previous()时,您都在撤消it.next(),这将使您的循环继续进行。所以一旦你遇到i这个字母,你的程序就会一遍又一遍地遇到同样的i。 -
感谢您解释问题没有看到那个问题!你也知道在我检查了前一个角色之后如何继续前进吗?我试图添加一个 it.next() 但它没有工作@VGR
-
it.next()确实可以工作,但它需要在您的if块之后,因为您每次遇到 'i' 时都会调用 it.previous(),无论是否如果测试通过。
标签: java if-statement switch-statement