characteriterator

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

我尝试了一个characteriterator,switch语句可以很好地工作,只要我尝试在case中添加if语句,因为它什么也不显示。你能告诉我哪里错了吗?

  1. StringBuilder sb = new StringBuilder(input);
  2. CharacterIterator it= new StringCharacterIterator(input);{
  3. for(char ch = it.first(); ch!= CharacterIterator.DONE; ch = it.next()) {
  4. switch(ch) {
  5. case 'E':
  6. sb.append("S");
  7. break;
  8. case 'n':
  9. sb.append("O");
  10. break;
  11. case 'g':
  12. sb.append("L");
  13. break;
  14. case 'a':
  15. sb.append(".");
  16. break;
  17. case 'i':
  18. if(it.previous() == ' ') {
  19. sb.append("ai");
  20. break;
  21. }
  22. break;
  23. case ' ':
  24. sb.append(" ");
  25. break;
  26. } } }

这是我的密码。“engine”的输出应该是“solai”,我尝试检查字符“i”是在单词的开头还是其他地方。因此,如果它在开始时,我的输出将用“ai”替换“i”,如果不是,则应删除它。

ymzxtsji

ymzxtsji1#

  1. StringBuilder sb = new StringBuilder(input);
  2. CharacterIterator it= new StringCharacterIterator(input);{
  3. for(char ch = it.first(); ch!= CharacterIterator.DONE; ch = it.next()) {
  4. switch(ch) {
  5. case 'E':
  6. sb.append("S");
  7. break;
  8. case 'n':
  9. sb.append("O");
  10. break;
  11. case 'g':
  12. sb.append("L");
  13. break;
  14. case 'a':
  15. sb.append(".");
  16. break;
  17. case 'i':
  18. if(it.previous() == ' ') {
  19. sb.append("ai");
  20. it.next();
  21. break;
  22. }
  23. sb.append("I");
  24. it.next();
  25. break;
  26. case ' ':
  27. sb.append(" ");
  28. break;
  29. } }
  30. System.out.print(sb.toString());
  31. }

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

展开查看全部

相关问题