characteriterator

uxh89sit  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(321)

我尝试了一个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”,如果不是,则应删除它。

ymzxtsji

ymzxtsji1#

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");
            it.next();
            break;
        }
        sb.append("I");
        it.next();
        break;
    case ' ':
        sb.append(" ");
        break;
    } } 
System.out.print(sb.toString());
}

您需要在if语句中添加it.next(),然后for循环将转到下一个字符!感谢@vgr

相关问题