JAVA 谁帮我看下这程序!

//就是想建立一个栈输入几个字符串!在输出importjava.util.*;publicclassStringStack{publicstaticvoidmain(St... //就是想建立一个栈 输入几个字符串!在输出
import java.util.*;

public class StringStack{
public static void main(String[] agrs){
Scanner scanner = new Scanner(System.in);

LinkedList<String> list = new LinkedList<String>();

while(true){
System.out.print("请输入字符串:");
String tem = scanner.next();
if(tem.equals("KOBE"))//以KOBE结尾
break;
list.addFirst(tem);
}

System.out.println("显示输入:");
for(int i = 0; i < list.size(); i++)
/*为什么我不管输入多少个字符串 他都只是输入一半的
字符串(输入 4个,"YANGYONGJIE","TMC","ALAN","KG",
"KOBE" 但是只返回"KG","ALAN"??)但是换用while(!list.isEmpty())
又能成!List.size方法难道不能返回 栈中的长度么?*/
System.out.println(list.removeFirst());

}
}
查看API文档 LinkedList 的size() 方法是返回此列表的元素数;那么那我的程序应该没错啊 为什么最后只返回一半的元素??
展开
 我来答
洪光来了
2008-06-21 · TA获得超过1695个赞
知道小有建树答主
回答量:409
采纳率:0%
帮助的人:0
展开全部
System.out.println(list.removeFirst())

这行代码做的事情是:把list里面的第一个元素从list里去掉,然后返回这个元素,最后out.print把这个字符打印出来。

这样的话,没执行者一段代码,你的list其实是在不断的变化的,条件int i = 0; i < list.size(); i++也就不能把所有的元素都打印出来了,理论上就只能打印前面的一半。

如果一定要用for循环的话,就先定义一个int把list.size的值记下来,比如

int size = list.size()

for(int i = 0; i < size; i++){
System.out.println(list.removeFirst());
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式