[J2SE] stack取出

看板java作者 (景)時間12年前 (2013/03/24 22:25), 編輯推噓4(4029)
留言33則, 8人參與, 最新討論串1/2 (看更多)
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.11.103

03/24 22:26, , 1F
所以妳想問什麼 我還之的看不懂你想問什麼 XD
03/24 22:26, 1F

03/24 22:27, , 2F
有人看得懂這篇在問什麼還煩請幫忙解釋一下
03/24 22:27, 2F
就是現在我的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)

03/24 22:44, , 3F
不就pop嗎?
03/24 22:44, 3F

03/24 22:44, , 4F
st.size() 是拿來取值的嗎?
03/24 22:44, 4F

03/24 22:46, , 5F
本文鎖定,請改善發文內容之後再斟酌解除鎖定
03/24 22:46, 5F
※ 編輯: bantime 來自: 122.117.11.103 (03/24 23:29)

03/25 00:53, , 6F
丟 1>0 和 for(;;) 的差別在哪?
03/25 00:53, 6F

03/25 09:04, , 7F
樓上 因為我不知道用(;;)也能做成無窮迴圈
03/25 09:04, 7F

03/25 12:15, , 8F
for(i=1; i<1; i++) <<一開始就不會進入...
03/25 12:15, 8F

03/25 12:19, , 9F
樓上 謝謝 我知道了 KOFXI有跟我提到
03/25 12:19, 9F

03/25 12:22, , 10F
因為初始值我給1 所以他判斷i<1不符合 就跳出了
03/25 12:22, 10F

03/25 12:23, , 11F
所以當我改成i>0就能夠造成我希望的無窮迴圈
03/25 12:23, 11F

03/25 12:26, , 12F
一般不建議用for來造成無窮迴圈
03/25 12:26, 12F

03/25 12:28, , 13F
迴圈我就知道for while do while 要用另外兩種嗎?
03/25 12:28, 13F

03/25 12:29, , 14F
可以用i<st.size()之類的,不過這case用while的確比較好
03/25 12:29, 14F

03/25 12:30, , 15F
最後我是用while(!st.isEmpty()) 來解決
03/25 12:30, 15F

03/25 12:31, , 16F
看需求使用 不過我想你應該先學習打出正確的條件式
03/25 12:31, 16F

03/25 12:31, , 17F
恩 謝謝 我要先上班了 要回來才能繼續學~感謝~受教了
03/25 12:31, 17F

03/25 12:33, , 18F
這例子用while這樣寫我覺得挺好的 可讀性也佳
03/25 12:33, 18F

03/25 16:46, , 19F
依序出來使用Stack就錯了,當然在單執行緒下好像不會錯
03/25 16:46, 19F

03/25 16:53, , 20F
依序吐,用ArrayList,LinkedList都可以,多序下用Vector
03/25 16:53, 20F

03/25 16:59, , 21F
回一篇文章好了..
03/25 16:59, 21F

03/25 17:20, , 22F
想想是我誤會了,看到他用for以為他要使用get(i)
03/25 17:20, 22F

03/25 17:22, , 23F
因為Stack.pop跟Stack.get 出來的順序相反
03/25 17:22, 23F

03/25 21:57, , 24F
因為我的程式剛好需要後進先出 所以才選用stack
03/25 21:57, 24F

03/25 21:59, , 25F
用ArrayList我是想不到有方法可以達成我要的效果
03/25 21:59, 25F

03/26 10:18, , 26F
看你有沒有重覆使用這個變數的需求吧,有的話用Stack
03/26 10:18, 26F

03/26 10:21, , 27F
for(int i=obj.size()-1;i>=0;i--){ obj.get(i); }
03/26 10:21, 27F

03/26 10:22, , 28F
這個方法就能夠把用相反順序拿出了?是吧!如果我沒解讀錯
03/26 10:22, 28F

03/26 10:23, , 29F
有一樣的輸出,只差在少了elements.delete及synchronized
03/26 10:23, 29F

03/26 10:24, , 30F
原來還有這種方法 受教了 謝謝
03/26 10:24, 30F
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)

03/26 10:27, , 31F
如果沒資源共享的需求,應該不會用到Stack
03/26 10:27, 31F

03/26 10:31, , 32F
抱歉 我還沒學到資源共享@@
03/26 10:31, 32F

03/26 10:36, , 33F
請不要一文多用,獨立問題請各自成篇
03/26 10:36, 33F
bantime:轉錄至看板 Sub_CS 03/28 02:58
文章代碼(AID): #1HJmp2Yq (java)
文章代碼(AID): #1HJmp2Yq (java)