java 数组和对象的问题。 这个代码哪里有问题啊,主要是想修改。但是都没变化。。

publicvoidmodifyStudent(Student[]stu){Scanners=newScanner(System.in);System.out.print... public void modifyStudent(Student[] stu) {
Scanner s = new Scanner(System.in);
System.out.println("输入一个你要修改的人的名字:");
String you = s.next();
System.out.println("输入一个修改后的人的名字:");
String your = s.next();
for (int i = 0; i < stu.length - 1; i++) {
if (stu[i]!= null && you==stu[i].name) {
stu[i].name = your;
break;
}

}
}
展开
 我来答
flyingsnown
2012-07-04
知道答主
回答量:16
采纳率:0%
帮助的人:12.3万
展开全部
那些说String类型比较必须用String.equals方法的人,都不是正解。
你这个代码是一个片段,说明不了你具体的问题是什么,大概的功能是,你输入一个要修改的名字,然后输入一个修改后的名字,把修改后的名字覆盖到要修改的名字上。
看以下代码
String a = "A";
String b = "A";
return a==b;
返回的结果是true。过程如下:String a = "A"; 会去 内存的 栈 内找 存储 "A” 的地址,如果未找到,那么划分一块内存,用于储存 "A",并将句柄指向 a 变量。同理,String b = "A”,去找,因为已经存在了,所以,不会划分内存,直接将 b 变量指向 a变量的内存地址。
所以,a == b,内存地址一样,返回的是true。
String a = new String("A");
String b = new String("A");
return a == b;
返回的结果是false。因为通过new关键字,创建的变量将在 堆 内储存。每new一次,都会单独开辟一块内存空间。所以, a == b,地址并不相同,返回结果false。
以上两种情况下,return a.equals(b) 和 return b.equals(a) 返回的结果都是true.因为,不管他们存储的地址,他们的值都是 "A"。
以上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修怀芹26
2012-07-04 · TA获得超过1208个赞
知道小有建树答主
回答量:695
采纳率:75%
帮助的人:445万
展开全部
问题出在字符串的比较上面,String 的比较最好使用 equals。
所以你的比较代码应该是
you.equals( stu[i].name)
这样就可以解决了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友489295667
2012-07-04 · TA获得超过2367个赞
知道小有建树答主
回答量:1471
采纳率:80%
帮助的人:293万
展开全部
you==stu[i].name,字符串的比较用equals方法。
you.equals(stu[i].name)
更多追问追答
追问
我们这个还没教呢。
追答
没教?那你们学没学String类啊?
学了String类,equals方法应该是重点说明的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hitzsf
2012-07-04 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1149万
展开全部
把代码贴全了,这个片段看不出啥名堂来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式