【问题标题】:CharacterIterator with switch statement and if statement带有 switch 语句和 if 语句的 CharacterIterator
【发布时间】: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


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多