所以我想做的是找到字符串的第一个“ s”的位置。所以我打印出来,输出为7。我希望indexFirst的值为0,因为字符串的“ she”包含“ s”。
发布问题后我马上就知道了,谢谢
public class string
{
public static void main(String[] args)
{
String str = "she is so nice";
char replacedFirst = 's';
int indexFirst = 0;
for(int index = 0; index < str.length(); index++)
{
if(str.charAt(index) == replacedFirst)
{
indexFirst = index;
}
}
System.out.println(indexFirst);
}
}
答案 0 :(得分:1)
Break
for loop
,当您第一次出现要搜索的char
时。当前,您当前的代码将返回char的最后一个索引。
if(str.charAt(index) == replacedFirst)
{
indexFirst = index;
break;
}
答案 1 :(得分:0)
正如阿米特(Amit)所说,for的中断是代码中的问题。
str.indexOf("s")
也会这样做。您根本不需要。
答案 2 :(得分:0)
或者,您也可以使用for
进行增强的String.toCharArray()
循环,以在每个char
上进行迭代:
public static void main(String[] args) {
String str = "she is so nice";
char replacedFirst = 'e';
int indexFirst = 0;
for (char c : str.toCharArray()) {
if(c == replacedFirst)
{
break;
}
indexFirst++;
}
System.out.println(indexFirst);
}
这将使用您的indexFirst
并在每次迭代时将其递增,如果break
匹配,则将使用char
。
e
的输出:
2
答案 3 :(得分:0)
您可以按照以下代码段来实现。如果将indexFirst初始化为0,即使字符串不包含's',它也将始终输出0。
public class string {
public static void main(String[] args) {
String str = "she is so nice";
char replacedFirst = 's';
int indexFirst = -1;
for(int index = 0; index < str.length(); index++; {
if(str.charAt(index) == replacedFirst) {
indexFirst = index;
if(indexFirst != -1) {
break;
}
} } System.out.println(indexFirst); } }`