黑马程序员技术交流社区

标题: java中如何把一个字符串数组进行比较 [打印本页]

作者: 咸明月    时间: 2012-7-14 14:10
标题: java中如何把一个字符串数组进行比较


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


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


作者: 温少邦    时间: 2012-7-14 14:29
equals是Object的方法
而char是基本类型,没有equals方法
可以直接用==比较
比如你的例子
String str="love";
System.out.println(str.charAt(2)=='v');

2个地方要注意
1.第3个字母的角标是2,要从0开始数
2.char要用单引号围起来,双引号围起来的是String
作者: 黑马振鹏    时间: 2012-7-14 14:32
本帖最后由 黑马振鹏 于 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')));

作者: 王宝康    时间: 2012-7-14 14:36
本帖最后由 王宝康 于 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. }
复制代码

作者: 马林康    时间: 2012-7-14 14:38
第三个字母索引是2
作者: 丁朋    时间: 2012-7-14 17:04
第三个字母肯定不是v,返回一个faulse,用boolean存储。用equals存储,我给你这个思路!
作者: 鲍霄霄    时间: 2012-7-14 19:14
很明显当你把str变成数组时,是变成了这个样子:[l][o][v][e],数组都有下标,即表示数组中元素的为止,不过数组的下标是从0开始的,所以v对应的下标是2,所以你里面应该写s[2],而不是s[3]
作者: 黑马刘涛    时间: 2012-7-14 19:22
  1. System.out.println(str.charAt(2)=='v');
复制代码
不需要转换为字符数组,直接用string类的charAt(int index)方法找到指定索引处的字符然后基本数据类型的比较
作者: 彭超华    时间: 2012-7-14 20:08
本帖最后由 彭超华 于 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"));




作者: 王红霞    时间: 2012-7-14 20:37
String str = "love";          //我想判断str的第三字母是不是v


char s[] = str.toCharArray();System.out.println(s[3].equals("v"));//数组的角标都是从0开始的 你要想看第三个字母 那角标是2




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