黑马程序员技术交流社区
标题:
求指点,那里错了,不能输出结果
[打印本页]
作者:
葛晓东
时间:
2014-6-2 20:18
标题:
求指点,那里错了,不能输出结果
本帖最后由 葛晓东 于 2014-6-3 23:45 编辑
/**
* 自己实现String类的equals方法
*"asda"
* "fds"
*一个一个的比,将每一个字符单独提出来比较,必须数组完成
* 字符串怎么转成数组 toCharArray()
* 遍历数组
* 每个每个比较
* 只要你发现有一个不一样,程序就结束了,结果false
*/
/*
* 分析:
* 1,所谓equals方法就是比较每一个字符是否相同
* 2,首先将字符串转换为字符数组
* 3,先判断数组长度是否相同,如果不同,直接false
* 4,如果长度相同,遍历数组,比较两个字符数组中相同脚标上的元素
*/
public class Test {
public static void main(String[] args) {
//定义两个数组
String firstString = "asda";
String secondString = "asda";
//将字符串转换为字符数组,调用toCharArray();并定义数组接收
char[] chArray1=firstString.toCharArray();
char[] chArray2=secondString.toCharArray();
//调用compareArray()方法,直接输出结果
compareArray(chArray1,chArray2);
}
//定义比较方法
public static void compareArray(char[] chArray1,char[] chArray2){
//先判断两个数组的长度是否相同
if (chArray1.length!=chArray2.length) {
System.out.println("两个字符串不相等");
}
//如果两个数组长度相同,用for循环遍历数组,比较每个相同脚标位上的元素
else {
//定义compare记录chArray1[i]!=chArray2[i]的值
boolean compare;
for(int i = 0; i < chArray1.length; i++) {
compare = chArray1[i]!=chArray2[i];
//比较每个脚标上的元素,如果出现有一个不同就输出"字符不串相等"
if(compare){
System.out.println("两个字符串不相等");
break;
}
}
//如果chArray1[i]==chArray2[i],就输出"字符串相等"
if(!compare)
System.out.println("两个字符串相等");
}
}
}
复制代码
作者:
Boiled_Water
时间:
2014-6-2 20:21
布尔变量在使用前需要对其初始化,所以只要在39行对boolean compare附初值就行了,改成 boolean compare = flase;就OK了
作者:
格子、
时间:
2014-6-2 20:26
楼主的compare没有赋初值,正常该编译失败的,并且会提示未赋初值,只要给compare赋初值改为compare=true;即可,小问题一枚。
代码如下
public class Test {
public static void main(String[] args) {
//定义两个数组
String firstString = "asda";
String secondString = "asda";
//将字符串转换为字符数组,调用toCharArray();并定义数组接收
char[] chArray1=firstString.toCharArray();
char[] chArray2=secondString.toCharArray();
//调用compareArray()方法,直接输出结果
compareArray(chArray1,chArray2);
}
//定义比较方法
public static void compareArray(char[] chArray1,char[] chArray2){
//先判断两个数组的长度是否相同
if (chArray1.length!=chArray2.length) {
System.out.println("两个字符串不相等");
}
//如果两个数组长度相同,用for循环遍历数组,比较每个相同脚标位上的元素
else {
//定义compare记录chArray1[i]!=chArray2[i]的值
[color=Red]//定义了变量要记得初始化哦,否则是无法通过编译的[/color]
boolean compare=true;
for(int i = 0; i < chArray1.length; i++) {
compare = chArray1[i]!=chArray2[i];
//比较每个脚标上的元素,如果出现有一个不同就输出"字符不串相等"
if(compare){
System.out.println("两个字符串不相等");
break;
}
}
//如果chArray1[i]==chArray2[i],就输出"字符串相等"
if(!compare)
System.out.println("两个字符串相等");
}
}
}
复制代码
作者:
张百振
时间:
2014-6-2 20:37
楼上回答很好
作者:
葛晓东
时间:
2014-6-2 23:44
格子、 发表于 2014-6-2 20:26
楼主的compare没有赋初值,正常该编译失败的,并且会提示未赋初值,只要给compare赋初值改为compare=true; ...
问题很严重啊 ,都不能编译通过,好了,不过我把comapre初始化为false了,这样才是我要的结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2