A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 咸明月 初级黑马   /  2012-7-14 14:10  /  4459 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



String str = "love";          //我想判断str的第三字母是不是v


char s[] = str.toCharArray();System.out.println(s[3].equals("v"));请问错在哪儿

9 个回复

倒序浏览
equals是Object的方法
而char是基本类型,没有equals方法
可以直接用==比较
比如你的例子
String str="love";
System.out.println(str.charAt(2)=='v');

2个地方要注意
1.第3个字母的角标是2,要从0开始数
2.char要用单引号围起来,双引号围起来的是String

点评

这个简单,不需要转换为char[]数组。  发表于 2012-7-14 15:20
回复 使用道具 举报
本帖最后由 黑马振鹏 于 2012-7-14 14:36 编辑

String str = "love";          //我想判断str的第三字母是不是v
char s[] = str.toCharArray();
转换为字符数组后,第三个字母应该是s[2].
修改后的结果:
   System.out.println(((Character)s[2]).equals(new Character ('v')));

点评

把基本数据类型的数据包装成对象,然后就可以使用对象的equals()方法,高明,我发现逛论坛真的可以学到太多东西了...  发表于 2012-7-14 14:47
回复 使用道具 举报
本帖最后由 王宝康 于 2012-7-14 14:40 编辑
  1. package string;

  2. public class Decide {

  3.         /**首先,你的代码中的数组脚标有问题,数组脚标是从0开始编号的,第三个位置的脚标为2,即程序中的s[2]
  4.          * 其次,equals()方法是字符串的方法,你的代码
  5.          * char s[] = str.toCharArray();System.out.println(s[3].equals("v"));char类型可是没有equals()方法的
  6.          * 数组中的数据类型为char类型
  7.          * char类型为基本数据类型,判断两个基本数据类型的数据是否相等,可以用"==",即s[2]=='v'.
  8.          *
  9.          * @param args
  10.          */
  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 String str = "love";
  14.                 char [] s = str.toCharArray();
  15.                 System.out.println(s[2]=='v');
  16.         }

  17. }
复制代码
回复 使用道具 举报
第三个字母索引是2
回复 使用道具 举报
第三个字母肯定不是v,返回一个faulse,用boolean存储。用equals存储,我给你这个思路!
回复 使用道具 举报
很明显当你把str变成数组时,是变成了这个样子:[l][o][v][e],数组都有下标,即表示数组中元素的为止,不过数组的下标是从0开始的,所以v对应的下标是2,所以你里面应该写s[2],而不是s[3]
回复 使用道具 举报
  1. System.out.println(str.charAt(2)=='v');
复制代码
不需要转换为字符数组,直接用string类的charAt(int index)方法找到指定索引处的字符然后基本数据类型的比较
回复 使用道具 举报
本帖最后由 彭超华 于 2012-7-14 20:48 编辑

String str = "love";          //我想判断str的第三字母是不是v


char s[] = str.toCharArray();System.out.println(s[3].equals("v"));请问错在哪儿

其一,你还没弄清数组的角标,数组角标是从0开始的,左边第一个元素的角标为0,后面元素角标值依次加1,第三个元素的角标值应该是2。
其二,要判断字符串中的指定位置的字符是否是指定字符,可以通过String类中提供的charAt(int index)获取该位置的字符,字符是基本数据类型,可以通过==来判断。
其三,char s[] = str.toCharArray();System.out.println(s[2].equals("v"));语句中,你把字符串转成了字符数组,S[2]获取的是一个字符,(“v”)用双引号表示的是一个字符串哦,equals方法由于String类覆写了Object类的方法,用来比较2个字符串的值是否相等,但你在这个语句中,用字符v和字符串v做equals方法比较,编译时就会报错,要运行正常,可以将s[2]通过valueOf()方法转成字符串比较,如:char s[] = str.toCharArray();System.out.println(String.valueOf(s[2]).equals("v"));



回复 使用道具 举报
String str = "love";          //我想判断str的第三字母是不是v


char s[] = str.toCharArray();System.out.println(s[3].equals("v"));//数组的角标都是从0开始的 你要想看第三个字母 那角标是2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马