日期:2014-05-20  浏览次数:20818 次

请各位大佬看看这个程序,为什么报返回值错误,小弟刚学JAVA,实在不明白。
程序功能是计算出字符在string中第一次出现的位置没有这个字符,则返回-1
public class Demo4 {
public static void main(String[] args) {
String str = "1234abcdeabcdabcaba";
int index = lastIndexOf(str, '3');
System.out.println(index);
}

public static int lastIndexOf(String str,char c){
char[] cs = str.toCharArray();
for (int i = cs.length-1; i >= 0; i--) {
if(c == cs[i])
return i;
else
return -1;
}

}

}
当把程序改成这样就没有问题
public class Demo4 {
public static void main(String[] args) {
String str = "1234abcdeabcdabcaba";
int index = lastIndexOf(str, '3');
System.out.println(index);
}

public static int lastIndexOf(String str,char c){
char[] cs = str.toCharArray();
for (int i = cs.length-1; i >= 0; i--) {
if(c == cs[i])
return i;


}
return -1;

}

}
但是把最下面的return -1去掉也会报错,实在不明是怎么回事
------解决方案--------------------
1.你确定是计算String第一次出现的位置;
2.你第一个程序结构就错了,循环只会执行一次;
3.我加了个变量,你可以参考一下:
public class Demo4
{
public static void main(String[] args)
{
String str = "1234abcdeabcdabcaba";
int index = lastIndexOf(str, '3');
System.out.println(index);
}

public static int lastIndexOf(String str, char c)
{
char[] cs = str.toCharArray();
int i;
int m = 0;

for (i=0; i <= cs.length-1; i++)
{
if (c == cs[i])
{
m = i;
return m;
}
}
if (i == cs.length)
{
return -1;
}
return m;
}
}

------解决方案--------------------

      public static void main(String[] args) {
String str = "1234abcdeabcdabcaba";
int index = lastIndexOf(str, '3');

System.out.println(index);
}

public static int lastIndexOf(String str, char charParam) {
char[] cs = str.toCharArray();
for (int i = cs.length - 1; i >= 0; i--) {
System.err.println(cs[i]);
if (charParam==cs[i])
return i;
else
continue;
}
return -1;
}