java - 编写一个需要查看字符串并判断两个字母是否相邻的方法
问题描述
我正在为学校做一个实验室,这些是说明:“编写一个程序来查看一个字符串是否在另一个特定字母旁边包含一个特定字母。”
这是样本数据:
要输入的样本数据:
chicken a b
frog f g
chicken c k
apluscompsci a s
apluscompsci a p
apluscompsci s c
apluscompsci c p
这是示例输出:
false
false
true
false
true
true
false
到目前为止,这是我的代码:
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 的范围,我不知道如何解决这个问题。感谢您的任何帮助!
解决方案
我觉得您做了不必要的验证检查,您可以将其简化如下。很抱歉没有为参数使用有意义的名称。尝试用你的观点重新实现这一点。
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
推荐阅读
- node.js - nodejs会话变量未定义
- json - 如何使用 Collection 对象在 Groovy 中获得所需的 Collection
- c++ - C++ 结构:强制初始化成员?
- r - 从R中的数据框行中删除部分字符串
- java - 带有控制线程的奇偶打印数字线程
- c++11 - C++中的模板化参数推导
- javascript - 页面转换后 JavaScript 文件不加载 (barba.js)
- build - 我只是想将新版本上传到现有版本。不断收到错误 ITMS-90062
- json - 将 GeoJson 多边形坐标转换为 lat / lng
- python - 为什么这个 glDrawElements 调用失败?