为了账号安全,请及时绑定邮箱和手机立即绑定

编写一个需要查看字符串并判断两个字母是否相邻的方法

编写一个需要查看字符串并判断两个字母是否相邻的方法

函数式编程 2021-10-06 10:38:31
我正在为学校做一个实验室,这些是说明:“编写一个程序来查看一个字符串是否包含另一个特定字母旁边的特定字母。”这是示例数据:要输入的示例数据:chicken a bfrog f gchicken c kapluscompsci a sapluscompsci a papluscompsci s capluscompsci c p这是示例输出:falsefalsetruefalsetruetruefalse到目前为止,这是我的代码:public class AB{    public static boolean check( String s, String a, String b)    {        int i;        if(s.indexOf(a) == -1 || s.indexOf(b) == -1)        {            return false;        }        if(s.indexOf(a) != -1 || s.indexOf(b) != -1)        {            for(i = 0; i < s.length() - 1; i++)            {                if(s.substring(s.indexOf(a) - 1,s.indexOf(a)).equals(b) ||  s.substring(s.indexOf(a) + 1,s.indexOf(a)).equals(b) || s.substring(s.lastIndexOf(a) - 1,s.indexOf(a)).equals(b) || s.substring(s.lastIndexOf(a) + 1,s.indexOf(a)).equals(b));                {                    return true;                }            }          }        return false;    }}这是我的跑步者的样子:public class AplusRunner{    public static void main( String args[] )    {        System.out.println( AB.check( "chicken", "a", "b" ) );        //add more cases        System.out.println( AB.check( "frog", "f", "g" ) );        System.out.println( AB.check( "chicken", "c", "k" ) );        System.out.println( AB.check( "apluscompsci", "a", "s" ) );        System.out.println( AB.check( "apluscompsci", "a", "p" ) );        System.out.println( AB.check( "apluscompsci", "s", "c" ) );        System.out.println( AB.check( "apluscompsci", "c", "p" ) );    }}出于某种原因,它一直显示第一个字符串样本为假(这应该发生),但对于第二个字符串样本,字符串索引超出 -1 的范围,我不知道如何解决这个问题。感谢您的任何帮助!
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我觉得你做了一个不必要的验证检查,你可以简化如下。抱歉没有为参数使用有意义的名称。尝试从您的角度重新实现这一点。


public class AB {

  public static boolean isConsecutive(String s, String a, String b) {

    return s.indexOf(a + b) != -1;

 }


 public static void main(String args[]) {

    System.out.println(AB.isConsecutive("chicken", "a", "b"));

    System.out.println(AB.isConsecutive("frog", "f", "g"));

    System.out.println(AB.isConsecutive("chicken", "c", "k"));

    System.out.println(AB.isConsecutive("apluscompsci", "a", "s"));

    System.out.println(AB.isConsecutive("apluscompsci", "a", "p"));

    System.out.println(AB.isConsecutive("apluscompsci", "s", "c"));

    System.out.println(AB.isConsecutive("apluscompsci", "c", "p"));


 }

}

输出 :


false

false

true

false

true

true

false


查看完整回答
反对 回复 2021-10-06
?
智慧大石

TA贡献1946条经验 获得超3个赞

String 类已经提供了许多实用方法来执行多个操作,为什么不使用它们而不是重新发明轮子呢?只需将您的方法更改为


public static boolean check (String s, String a, String b) {      

   // check if combination of both strings (a+b) are present in 's' 

   return (s.contains(a+b)) ? true : false;


}


查看完整回答
反对 回复 2021-10-06
?
慕容森

TA贡献1853条经验 获得超18个赞

您可以通过组合各个字母并检查它们的索引来简单地创建一个临时字符串。这段代码应该适合你。


    import java.util.*;


public class Letters{

    private static boolean CheckConsecutiveLetters(String str, String l1, String l2)

    {

        int index_l1 = str.indexOf(l1);

        String temp = l1 + l2;

        System.out.println(temp);

        if(str.indexOf(temp) >= 0)

        {

            return true;

        }

        return false;

    }


    public static void main(String[] args)

    {

        boolean output = CheckConsecutiveLetters("chicken", "c", "k" );

        System.out.println(output);

    }

}


查看完整回答
反对 回复 2021-10-06
  • 3 回答
  • 0 关注
  • 296 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信