首页 > 解决方案 > 如何多次检查特定事件?

问题描述

我是初学者。我的代码假设用户将输入一个带有“*”(星号)的单词,如果 * 前后的字符相同,则显示“相同”。例如,对于输入 ja'*'aisfun,我的输出应该是“相同的”,因为 * 介于相同的字母之间。我的代码似乎适用于大多数情况,例如几颗星,但是当我尝试像“ja” “a” “isfun”这样的用户输入时,输出是“相同的”,即使它应该显示“不同”,因为“a”和“我”是不同的字母。我想我的代码在这种情况下只能检查第一颗星。我该如何解决这个问题?(考虑没有撇号的星星)

    String ind = "DIFFERENT";
    for (int i = 0; i< s.length(); i++) {
        if ((s.charAt(i) == '*') && (s.charAt(i-1)) == s.charAt(i+1))
            ind = "SAME";
        }
        System.out.print(ind);
    }
    System.out.print("NO");

标签: javastringfor-loopchar

解决方案


您必须将循环从第 2 个字符限制到最后的第 2 个字符,并在找到匹配项时中断(我想):

String ind = "DIFFERENT";
for (int i = 1; i < s.length() - 1; i++) {
    if ((s.charAt(i) == '*') && (s.charAt(i-1)) == s.charAt(i+1)) {
        ind = "SAME";
        break;
    }
}
System.out.print(ind);

还掉:

System.out.print("NO");

推荐阅读