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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 葛晓东 中级黑马   /  2014-6-2 20:18  /  1266 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葛晓东 于 2014-6-3 23:45 编辑

  1. /**
  2. * 自己实现String类的equals方法
  3. *"asda"
  4. * "fds"
  5. *一个一个的比,将每一个字符单独提出来比较,必须数组完成
  6. * 字符串怎么转成数组 toCharArray()
  7. * 遍历数组
  8. * 每个每个比较
  9. * 只要你发现有一个不一样,程序就结束了,结果false
  10. */
  11. /*
  12. * 分析:
  13. *         1,所谓equals方法就是比较每一个字符是否相同
  14. *         2,首先将字符串转换为字符数组
  15. *         3,先判断数组长度是否相同,如果不同,直接false
  16. *         4,如果长度相同,遍历数组,比较两个字符数组中相同脚标上的元素
  17. */
  18. public class Test {
  19.         public static void main(String[] args) {
  20.                 //定义两个数组
  21.                 String firstString = "asda";
  22.                 String secondString = "asda";
  23.                 //将字符串转换为字符数组,调用toCharArray();并定义数组接收
  24.                 char[] chArray1=firstString.toCharArray();
  25.                 char[] chArray2=secondString.toCharArray();
  26.                 //调用compareArray()方法,直接输出结果
  27.                 compareArray(chArray1,chArray2);
  28.         }
  29.         //定义比较方法
  30.         public static void compareArray(char[] chArray1,char[] chArray2){
  31.                 //先判断两个数组的长度是否相同
  32.                 if (chArray1.length!=chArray2.length) {
  33.                         System.out.println("两个字符串不相等");
  34.                 }
  35.                 //如果两个数组长度相同,用for循环遍历数组,比较每个相同脚标位上的元素
  36.                 else {
  37.                         //定义compare记录chArray1[i]!=chArray2[i]的值
  38.                         boolean compare;
  39.                         for(int i = 0; i < chArray1.length; i++) {
  40.                                 compare = chArray1[i]!=chArray2[i];
  41.                                 //比较每个脚标上的元素,如果出现有一个不同就输出"字符不串相等"
  42.                                 if(compare){
  43.                                         System.out.println("两个字符串不相等");
  44.                                                 break;
  45.                                 }        
  46.                         }
  47.                         //如果chArray1[i]==chArray2[i],就输出"字符串相等"
  48.                         if(!compare)
  49.                                 System.out.println("两个字符串相等");
  50.                 }
  51.         }
  52. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

倒序浏览
布尔变量在使用前需要对其初始化,所以只要在39行对boolean compare附初值就行了,改成  boolean compare = flase;就OK了
回复 使用道具 举报
楼主的compare没有赋初值,正常该编译失败的,并且会提示未赋初值,只要给compare赋初值改为compare=true;即可,小问题一枚。
代码如下
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 //定义两个数组
  4.                 String firstString = "asda";
  5.                 String secondString = "asda";
  6.                 //将字符串转换为字符数组,调用toCharArray();并定义数组接收
  7.                 char[] chArray1=firstString.toCharArray();
  8.                 char[] chArray2=secondString.toCharArray();
  9.                 //调用compareArray()方法,直接输出结果
  10.                 compareArray(chArray1,chArray2);
  11.         }
  12.         //定义比较方法
  13.         public static void compareArray(char[] chArray1,char[] chArray2){
  14.                 //先判断两个数组的长度是否相同
  15.                 if (chArray1.length!=chArray2.length) {
  16.                         System.out.println("两个字符串不相等");
  17.                 }
  18.                 //如果两个数组长度相同,用for循环遍历数组,比较每个相同脚标位上的元素
  19.                 else {
  20.                         //定义compare记录chArray1[i]!=chArray2[i]的值
  21.                                                 [color=Red]//定义了变量要记得初始化哦,否则是无法通过编译的[/color]
  22.                         boolean compare=true;
  23.                         for(int i = 0; i < chArray1.length; i++) {
  24.                                 compare = chArray1[i]!=chArray2[i];
  25.                                 //比较每个脚标上的元素,如果出现有一个不同就输出"字符不串相等"
  26.                                 if(compare){
  27.                                         System.out.println("两个字符串不相等");
  28.                                                 break;
  29.                                 }      
  30.                         }
  31.                         //如果chArray1[i]==chArray2[i],就输出"字符串相等"
  32.                         if(!compare)
  33.                                 System.out.println("两个字符串相等");
  34.                 }
  35.         }
  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
楼上回答很好
回复 使用道具 举报
格子、 发表于 2014-6-2 20:26
楼主的compare没有赋初值,正常该编译失败的,并且会提示未赋初值,只要给compare赋初值改为compare=true; ...

问题很严重啊 ,都不能编译通过,好了,不过我把comapre初始化为false了,这样才是我要的结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马