黑马程序员技术交流社区

标题: 帮我分析下这题打印为什么是-1 帮我分析下这题打印为什么是-1 [打印本页]

作者: 孟庆全    时间: 2012-9-20 00:07
标题: 帮我分析下这题打印为什么是-1 帮我分析下这题打印为什么是-1
String str1 = "Copacabana";
String str2=" Coconut ";
System.out.println (str1.indexOf(str2.charAt(3),5));


作者: 何小红    时间: 2012-9-20 00:08
String 的 indexOf(int ch, int fromIndex)方法返回值是从位置 fromIndex 起出现ch的位置。您的程序str2.charAt(3) 是‘c’,从str1的第五位起没有c再出现,所以indexOf的返回值是-1.
作者: 何小红    时间: 2012-9-20 00:09
你的基础有待提高啊 呵呵  努力 加油
作者: 张飞年    时间: 2012-9-20 01:02
本帖最后由 张飞年 于 2012-9-20 01:04 编辑

原因如下:
charAt()方法的索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推。所以str2.charAt(3)的结果为'c'【楼主的str2开头有一个空格的】。
str1.indexOf(int ch, int fromIndex)方法表示从fromIndex开始找ch,返回第一个找到的ch的位置,因为在此处5往后没有找到,所以返回-1.
分析这类连接套在一起的方法,从里往外一层一层分析,多查查API哦。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2