4 回答
TA贡献1864条经验 获得超6个赞
这行代码中有一个错误:
if(s.equals(c)) {
它正在将整个字符串与字符进行比较,并且(显然)不匹配。
您需要比较字符串中索引处的单个字符:
if (s.charAt(i) == c) {
顺便说一句,您也可以直接从语句中使用。这将允许您删除变量并使代码更短一些:returnifposition
public static int seqSearchPos(String s, char c) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == c) {
return i;
}
}
return -1;
}
还有一个字符串.indexOf(int c) 方法,它完全可以满足您的需求,并允许您像这样编写该方法:
public static int seqSearchPos(String s, char c) {
return s.indexOf(c);
}
或者,更好的是,只需直接调用该 String 方法,而不是将其包装在您自己的函数中。
TA贡献1784条经验 获得超8个赞
你应该能够在这里找到你的答案:如何检查字符串中是否出现一个字符?
其中一个答案还谈到了角色的位置。
他们基本上正在使用默认的字符串库,即:String.contains()
String.indexOf()
TA贡献1842条经验 获得超21个赞
实际上,您正在尝试实现字符串类的方法。contains(char)indexOf(char)
您正在将整个字符串与单个字符进行比较。如果字符串的长度不是 1,则您的方法将始终返回 false。要纠正这一点,您应该迭代 String 的每个字符,并且您可以使用 == 运算符比较两个 char。
public static boolean seqSearch(String s, char c) {
boolean found=false;
for(int i=0;i<s.length();i++){
if(s.charAt(i)==c) {
found=true;
}
}
return found;
}
同样的问题也存在于你的第二期中,你应该比较每个字符。
public static int seqSearchPos(String s,char c) {
int position=-1;
for(int i=0; i<s.length(); i++) {
if(s.charAt(i)==c) {
position=i;
break;
}
}
return position;
}
TA贡献1789条经验 获得超10个赞
正如其他人所指出的,你的问题是你将整个字符串与字符进行比较,这总是假的。sc
以下是使用 Java 流的方法的两个实现:
public static boolean seqSearch(String string, char character) {
return string.chars().anyMatch(c -> c == character);
}
这将创建一个包含所有返回 true 的字符(如果其中任何一个为 true)。IntStream
public static int seqSearchPos(String string, char character) {
return IntStream.range(0, string.length())
.filter(i -> string.charAt(i) == character)
.findFirst()
.orElse(-1);
}
在这里,您将创建一个 from to,如果找到该 char,则返回第一个索引。如果不是,则返回 。IntStream0n - 1-1
除此之外,您还可以使用本机 String.indexOf() 方法,该方法完全符合您的要求:
public static int seqSearchPos(String string, char character) {
return string.indexOf(character);
}
您也可以将此方法用于您的方法:seqSearch()
public static boolean seqSearch(String string, char character) {
return string.indexOf(character) >= 0;
}
或者,您可以使用本机字符串.contain() 方法来实现此目的:
public static boolean seqSearch(String string, char character) {
return string.contains(String.valueOf(character));
}
添加回答
举报