java基础知识,请大家分析一下原因!

importjava.io.*;publicclassHello{publicstaticvoidmain(Stringargs[]){Catc1=newCat("小白"... import java.io.*;
public class Hello
{
public static void main(String args[])
{
Cat c1 = new Cat("小白", "白色", 3);
Cat c2 = new Cat("小花", "花色", 100);

String a = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try{
a = br.readLine();
}catch(IOException b){
;
};

if(a == c1.name)
{
c1.getAge();
}else if(a == c2.name)
{
c2.getAge();
}else
{
System.out.println("没有此猫");

}
}
}
class Cat {
int age;
String name, color;

Cat(String _name, String _color, int _age){
this.age = _age;
this.name = _name;
this.color = _color;

}

public void getAge() {
System.out.println(this.age);
}
}

当我在控制台输入“小白”时,程序在控制台打印“没有此猫”。。。按我的逻辑应该是打印“小白”的年龄啊。。。谢谢各位了求解
展开
 我来答
sharksbill
2014-04-14 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:109万
展开全部
--》你好
a == c1.name a == c2.name
问题就在这俩处 String类型之间判断是否内容相同应该用 a.equals(c1.name) c2同上
==指的是数据存储地址相同 显然在上述程序中应该是判断内容的
---》如对你有帮助,请采纳
yugi111
2014-04-14 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
字符串比较用equals,如果2个字符串相等,表示他们的hashcode也是相等的,如果不是,则违背java.lang.Object的规范第二条:两个根据 equal()相等的对象他们返回的hashcode值也必然相等
追问
谢谢啊  我把代码改成下面了
if(c1.equals(a))
{
c1.getAge();
}else if(c2.equals(a))
{
c2.getAge();
}else
{
System.out.println("没有此猫");

}
输入“小白”后 还是打印“没有此猫” 。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式