seqSearchFunction(String s,char c)

我正在尝试创建两个函数。一:如果 c 变量在 String 变量中至少出现一次,则显示“true”。二:函数相同,但显示字母的位置。更具体地说,如果 c 出现在 s 中,seqSearchPos 函数(字符串 s,字符 c)将搜索 c 的位置,如果存在,函数会将 c 的位置返回到 s。如果 c 不存在,则该函数将返回 -1。


可悲的是,不知道如何解决这个问题,这个关于字符串和char的特定问题。一定有一个我仍然不知道的方法可以帮助我解决这个问题


public static boolean seqSearch(String s, char c) {

       boolean found=false;

       if(s.equals(c)) {

           found=true;

       }

       return found;

   }

主要:


String s="e";

char c='e';

System.out.println(seqSearch(s,c));

public static int seqSearchPos(String s,char c) {

       int position=-1;

       for(int i=0; i<s.length(); i++) {

           if(s.equals(c)) {

               position=i;

               break;

           }

       }

       return position;

   }

主要:


String s="hello";

char c='e';

System.out.println(seqSearchPos(s,c));

我期望在第一个和第二个位置1中显示真,但它分别显示假和-1。


HUWWW
浏览 87回答 4
4回答

慕尼黑的夜晚无繁华

这行代码中有一个错误:if(s.equals(c)) {它正在将整个字符串与字符进行比较,并且(显然)不匹配。您需要比较字符串中索引处的单个字符:if (s.charAt(i) == c) {顺便说一句,您也可以直接从语句中使用。这将允许您删除变量并使代码更短一些:returnifpositionpublic static int seqSearchPos(String s, char c) {&nbsp; &nbsp; for (int i = 0; i < s.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; if (s.charAt(i) == c) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return i;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return -1;}还有一个字符串.indexOf(int c) 方法,它完全可以满足您的需求,并允许您像这样编写该方法:public static int seqSearchPos(String s, char c) {&nbsp; &nbsp; return s.indexOf(c);}或者,更好的是,只需直接调用该 String 方法,而不是将其包装在您自己的函数中。

青春有我

你应该能够在这里找到你的答案:如何检查字符串中是否出现一个字符?其中一个答案还谈到了角色的位置。他们基本上正在使用默认的字符串库,即:String.contains()String.indexOf()

茅侃侃

实际上,您正在尝试实现字符串类的方法。contains(char)indexOf(char)您正在将整个字符串与单个字符进行比较。如果字符串的长度不是 1,则您的方法将始终返回 false。要纠正这一点,您应该迭代 String 的每个字符,并且您可以使用 == 运算符比较两个 char。public static boolean seqSearch(String s, char c) {&nbsp; &nbsp;boolean found=false;&nbsp; &nbsp;for(int i=0;i<s.length();i++){&nbsp; &nbsp; &nbsp;if(s.charAt(i)==c) {&nbsp; &nbsp; &nbsp; &nbsp; found=true;&nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;}&nbsp; &nbsp;return found;}同样的问题也存在于你的第二期中,你应该比较每个字符。public static int seqSearchPos(String s,char c) {&nbsp; &nbsp;int position=-1;&nbsp; &nbsp;for(int i=0; i<s.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp;if(s.charAt(i)==c) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;position=i;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;}&nbsp; &nbsp;return position;}

至尊宝的传说

正如其他人所指出的,你的问题是你将整个字符串与字符进行比较,这总是假的。sc以下是使用 Java 流的方法的两个实现:public static boolean seqSearch(String string, char character) {&nbsp; &nbsp; return string.chars().anyMatch(c -> c == character);}这将创建一个包含所有返回 true 的字符(如果其中任何一个为 true)。IntStreampublic static int seqSearchPos(String string, char character) {&nbsp; &nbsp; return IntStream.range(0, string.length())&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .filter(i -> string.charAt(i) == character)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .findFirst()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .orElse(-1);}在这里,您将创建一个 from to,如果找到该 char,则返回第一个索引。如果不是,则返回 。IntStream0n - 1-1除此之外,您还可以使用本机 String.indexOf() 方法,该方法完全符合您的要求:public static int seqSearchPos(String string, char character) {&nbsp; &nbsp; return string.indexOf(character);}您也可以将此方法用于您的方法:seqSearch()public static boolean seqSearch(String string, char character) {&nbsp; &nbsp; return string.indexOf(character) >= 0;}或者,您可以使用本机字符串.contain() 方法来实现此目的:public static boolean seqSearch(String string, char character) {&nbsp; &nbsp; return string.contains(String.valueOf(character));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java