检查字符“a”与“b”是否相隔三个位置

问题描述 投票:0回答:5

各位。我正在做

codebyte.com
上的每一个问题(我向每个想要练习编码技能的人建议网站:))并陷入这个问题:如果字符
true
a
完全分开,则返回
b
``3 在字符串中的任意位置至少出现一次;否则返回
false
。 例子:

Input = "after badly" Output = "false"
Input = "Laura sobs" Output = "true"

每次我写任何

false
时,我的代码都会给我
string
,而在某些情况下它应该返回
true
。 smb可以看一下吗?

public static void main(String[] args)
    {
    Scanner kbd = new Scanner(System.in);
            System.out.println("Please enter any String: ");
            String myString = kbd.nextLine();
            char[] myArray = myString.toCharArray();
            boolean result = false;

            for(int i = 0; i < myArray.length; i++)
            {
                if(myArray[i] == 'a' && myArray[i+4] == 'b')
                    result = true;
                else 
                    result = false;
            }
            System.out.println(result);
}
java
5个回答
2
投票

一旦发现它是 true,您将想要打印 True 并退出 for 循环。截至目前,即使找到真值,您仍会继续遍历字符串!

public static void main(String[] args)
{
Scanner kbd = new Scanner(System.in);
        System.out.println("Please enter any String: ");
        String myString = kbd.nextLine();
        char[] myArray = myString.toCharArray();
        boolean result = false;

        for(int i = 0; i < myArray.length; i++)
        {
            if(myArray[i] == 'a' && myArray[i+4] == 'b'){
                result = true;
                break;
            }
        }
        System.out.println(result);

}

此外,还不清楚您是否正在寻找像“adddb”或“addb”这样的字符串 因为前者是i+4,后者是i+3


1
投票

一个简单的break语句将在这里帮助你。在 for 循环中,只需将结果设置为 true 后立即放入 if 条件下即可。如果我们发现“a”和“b”之间有 3 个空格,我们想跳出循环并告诉用户! Break 语句将自动为您终止循环。

for(int i = 0; i < myArray.length; i++){
   if(myArray[i] == 'a' && myArray[i+4] == 'b'){
      result = true;
      break;
   }
   else 
     result = false;
   }

0
投票

i+4
是四个空格,如果您想要三个,请使用
i+3
。另外,检查长度 - 3。另外,如果您将
break;
设置为
result
(或者下一次迭代将重置它),则
true
。喜欢

boolean result = false;
for(int i = 0; i < myArray.length - 3; i++) {
    if (myArray[i] == 'a' && myArray[i+3] == 'b') {
        result = true;
        break;
    }
}

0
投票

如果您使用数组索引,您可能会以 arrayIndexOutOfBoundException 结束。而是使用正则表达式

public static void main(String[] args) {
    Scanner kbd = new Scanner(System.in);
    System.out.println("Please enter any String: ");
    String myString = kbd.nextLine();
    boolean result = false;

    if(myString.matches("^(.)*(a)(.){3}(b)(.)*$")){
        result = true;
    }
    System.out.println(result);
}

0
投票

不需要 charAt(),只需使用 str[i] 即可。

function separated(str) {
for (var i = 0; i < str.length; i++) {
    if ((str[i] == "a") && (str[i + 4] == "b")) {
        return true
    } else {
        return false
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.