这2种JAVA程序为何运行结果不同啊?

我写了一个editName的方法,publicclassServices{LinkedList<String>inputNames=newLinkedList<Strin... 我写了一个editName的方法,
public class Services {

LinkedList<String> inputNames = new LinkedList<String>();
public void editName(String oldName,String newName){
LinkedList<String> inputNames = new LinkedList<String>();
if(inputNames.contains(oldName)){
Set<String> set = new HashSet<String>();
for(String str:inputNames){
set.add(oldName);
}
Iterator<String> it =set.iterator();
while(it.hasNext()){
String str=it.next();
for(int i=0;i<inputNames.size();i++){
if(inputNames.get(i).equals(str)){//和旧的名字相同的名字的下标
inputNames.set(i, newName);
}
}
}

}
}
}
可以被调用来修改学生的姓名,结果,我在main方法里调用,学生姓名列表根本没有被修改。但是,单独运行这个方法倒是可以的。
public class Execute {

public static void main(String[] args){//返回需要修改的名字的个数
Services services = new Services();
String oldName ="jerry";
String newName = "anna";
LinkedList<String> inputNames = new LinkedList<String>();
inputNames.add("tom");
inputNames.add("jerry");
inputNames.add("jenny");
inputNames.add("jerry");
inputNames.add("will");

services.editName(oldName,newName);
System.out.println(inputNames);
}

}
不知道原因何在?
展开
 我来答
一片轻云穿堂过
2015-02-27 · TA获得超过164个赞
知道小有建树答主
回答量:314
采纳率:50%
帮助的人:108万
展开全部

这里是不是new 了一个新列表?那么 这个列表就是空的 

后面的if就没效果了..再后面的set 啊  都是空的

追问
谢谢你的回答,我把第一行的LinnkedList inputNames = new LinkedList();注销了,但是,运行结果还是没有修改,看来这个不是原因。set不是空的了。
追答
不是第一行..也不知道 你的inputNames这个list是怎么传递进去的..
main 方法里面 没有 吧 inputNames 这个list 传入service这个类里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听说的i
2015-02-27
知道答主
回答量:48
采纳率:0%
帮助的人:13.1万
展开全部
你上面那个Services里面的方法没有return,所以现在的这个inputNames才会没有改变。。。。
更多追问追答
追问
我是设定的没有返回值的void方法editName(),怎么写return啊?没有返回值,可以写return吗?
追答
你把void改成LinkedList,然后再return你的inputNames
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式