作者bantime (景)
看板java
标题[J2SE] stack取出
时间Sun Mar 24 22:25:03 2013
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.11.103
1F:推 duck10704:所以你想问什麽 我还之的看不懂你想问什麽 XD 03/24 22:26
2F:推 PsMonkey:有人看得懂这篇在问什麽还烦请帮忙解释一下 03/24 22:27
就是现在我的STACK里面有一堆东西
我想让它依序丢出
而我想到的方法适用回圈让它重复执行System.out.print(st.pop());
问题是加上回圈却连一个值都丢不出来
而如果我拿掉回圈 改成多打几次System.out.print(st.pop());
则可以正确的显示我要的结果
可是我并不想多打几次 因为STACK内的数量不定 想用回圈让它跑玩
有没有办法?
抱歉 刚刚复制错误 没注意到我改成size 我本来就是用pop而以
问题已经解决了
while(!st.isEmpty())
System.out.print(st.pop());
这样就能达成我要的目的
可是问题是
为什麽我用
for(int i = 1 ; i<1 ; i++){
System.out.print(st.pop());
}
让它跑 却连一个值都丢不出来?
问题已经解决了
原本是希望做出一个无穷回圈 让它重复执行System.out.print(st.pop());
但是因为逻辑性错误
应该要用 i =1 ; 1>0 ; i++ 才能做出来
导致内部一次都没执行到 才会跑不出来
感谢KOFXI的指导~
※ 编辑: bantime 来自: 122.117.11.103 (03/24 22:30)
3F:→ johnhao1206:不就pop吗? 03/24 22:44
4F:→ iFEELing:st.size() 是拿来取值的吗? 03/24 22:44
5F:推 PsMonkey:本文锁定,请改善发文内容之後再斟酌解除锁定 03/24 22:46
※ 编辑: bantime 来自: 122.117.11.103 (03/24 23:29)
6F:→ asilzheng:丢 1>0 和 for(;;) 的差别在哪? 03/25 00:53
7F:→ bantime:楼上 因为我不知道用(;;)也能做成无穷回圈 03/25 09:04
8F:→ cha122977:for(i=1; i<1; i++) <<一开始就不会进入... 03/25 12:15
9F:→ bantime:楼上 谢谢 我知道了 KOFXI有跟我提到 03/25 12:19
10F:→ bantime:因为初始值我给1 所以他判断i<1不符合 就跳出了 03/25 12:22
11F:→ bantime:所以当我改成i>0就能够造成我希望的无穷回圈 03/25 12:23
12F:→ cha122977:一般不建议用for来造成无穷回圈 03/25 12:26
13F:→ bantime:回圈我就知道for while do while 要用另外两种吗? 03/25 12:28
14F:→ cha122977:可以用i<st.size()之类的,不过这case用while的确比较好 03/25 12:29
15F:→ bantime:最後我是用while(!st.isEmpty()) 来解决 03/25 12:30
16F:→ cha122977:看需求使用 不过我想你应该先学习打出正确的条件式 03/25 12:31
17F:→ bantime:恩 谢谢 我要先上班了 要回来才能继续学~感谢~受教了 03/25 12:31
18F:→ cha122977:这例子用while这样写我觉得挺好的 可读性也佳 03/25 12:33
19F:→ abola921:依序出来使用Stack就错了,当然在单执行绪下好像不会错 03/25 16:46
20F:→ abola921:依序吐,用ArrayList,LinkedList都可以,多序下用Vector 03/25 16:53
21F:→ abola921:回一篇文章好了.. 03/25 16:59
22F:→ abola921:想想是我误会了,看到他用for以为他要使用get(i) 03/25 17:20
23F:→ abola921:因为Stack.pop跟Stack.get 出来的顺序相反 03/25 17:22
24F:→ bantime:因为我的程式刚好需要後进先出 所以才选用stack 03/25 21:57
25F:→ bantime:用ArrayList我是想不到有方法可以达成我要的效果 03/25 21:59
26F:→ abola921:看你有没有重覆使用这个变数的需求吧,有的话用Stack 03/26 10:18
27F:→ abola921:for(int i=obj.size()-1;i>=0;i--){ obj.get(i); } 03/26 10:21
28F:→ bantime:这个方法就能够把用相反顺序拿出了?是吧!如果我没解读错 03/26 10:22
29F:→ abola921:有一样的输出,只差在少了elements.delete及synchronized 03/26 10:23
30F:→ bantime:原来还有这种方法 受教了 谢谢 03/26 10:24
import java.util.*;
public class Change {
public static void main(String[] args){
Stack st = new Stack();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入欲转换的正整数(十进位)");
int a = scanner.nextInt();
System.out.println("请输入欲转换进制(2~9)");
int b = scanner.nextInt();
while(a>=b){
//System.out.print(a%b);
int c = a/b;
//System.out.print(c);
st.push(a%b);
a = c ;
}
st.push(a%b);
System.out.print("转换结果为:");
while(!st.isEmpty()) {
System.out.print(st.pop());
}
}
}
这是我的程式码 try catch还没做
还有哪些地方可以加强的吗?
※ 编辑: bantime 来自: 122.117.11.103 (03/26 10:26)
31F:→ abola921:如果没资源共享的需求,应该不会用到Stack 03/26 10:27
32F:→ bantime:抱歉 我还没学到资源共享@@ 03/26 10:31
33F:推 PsMonkey:请不要一文多用,独立问题请各自成篇 03/26 10:36
※ bantime:转录至看板 Sub_CS 03/28 02:58