4 回答
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
這行代碼中有一個(gè)錯(cuò)誤:
if(s.equals(c)) {
它正在將整個(gè)字符串與字符進(jìn)行比較,并且(顯然)不匹配。
您需要比較字符串中索引處的單個(gè)字符:
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;
}
還有一個(gè)字符串.indexOf(int c) 方法,它完全可以滿足您的需求,并允許您像這樣編寫該方法:
public static int seqSearchPos(String s, char c) {
return s.indexOf(c);
}
或者,更好的是,只需直接調(diào)用該 String 方法,而不是將其包裝在您自己的函數(shù)中。
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
你應(yīng)該能夠在這里找到你的答案:如何檢查字符串中是否出現(xiàn)一個(gè)字符?
其中一個(gè)答案還談到了角色的位置。
他們基本上正在使用默認(rèn)的字符串庫,即:String.contains()String.indexOf()
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
實(shí)際上,您正在嘗試實(shí)現(xiàn)字符串類的方法。contains(char)indexOf(char)
您正在將整個(gè)字符串與單個(gè)字符進(jìn)行比較。如果字符串的長度不是 1,則您的方法將始終返回 false。要糾正這一點(diǎn),您應(yīng)該迭代 String 的每個(gè)字符,并且您可以使用 == 運(yùn)算符比較兩個(gè) 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;
}
同樣的問題也存在于你的第二期中,你應(yīng)該比較每個(gè)字符。
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貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
正如其他人所指出的,你的問題是你將整個(gè)字符串與字符進(jìn)行比較,這總是假的。sc
以下是使用 Java 流的方法的兩個(gè)實(shí)現(xiàn):
public static boolean seqSearch(String string, char character) {
return string.chars().anyMatch(c -> c == character);
}
這將創(chuàng)建一個(gè)包含所有返回 true 的字符(如果其中任何一個(gè)為 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);
}
在這里,您將創(chuàng)建一個(gè) from to,如果找到該 char,則返回第一個(gè)索引。如果不是,則返回 。IntStream0n - 1-1
除此之外,您還可以使用本機(jī) 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;
}
或者,您可以使用本機(jī)字符串.contain() 方法來實(shí)現(xiàn)此目的:
public static boolean seqSearch(String string, char character) {
return string.contains(String.valueOf(character));
}
添加回答
舉報(bào)
