看板 java 關於我們 聯絡資訊
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.11.103
duck10704:所以妳想問什麼 我還之的看不懂你想問什麼 XD 03/24 22:26
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)
johnhao1206:不就pop嗎? 03/24 22:44
iFEELing:st.size() 是拿來取值的嗎? 03/24 22:44
PsMonkey:本文鎖定,請改善發文內容之後再斟酌解除鎖定 03/24 22:46
※ 編輯: bantime 來自: 122.117.11.103 (03/24 23:29)
asilzheng:丟 1>0 和 for(;;) 的差別在哪? 03/25 00:53
bantime:樓上 因為我不知道用(;;)也能做成無窮迴圈 03/25 09:04
cha122977:for(i=1; i<1; i++) <<一開始就不會進入... 03/25 12:15
bantime:樓上 謝謝 我知道了 KOFXI有跟我提到 03/25 12:19
bantime:因為初始值我給1 所以他判斷i<1不符合 就跳出了 03/25 12:22
bantime:所以當我改成i>0就能夠造成我希望的無窮迴圈 03/25 12:23
cha122977:一般不建議用for來造成無窮迴圈 03/25 12:26
bantime:迴圈我就知道for while do while 要用另外兩種嗎? 03/25 12:28
cha122977:可以用i<st.size()之類的,不過這case用while的確比較好 03/25 12:29
bantime:最後我是用while(!st.isEmpty()) 來解決 03/25 12:30
cha122977:看需求使用 不過我想你應該先學習打出正確的條件式 03/25 12:31
bantime:恩 謝謝 我要先上班了 要回來才能繼續學~感謝~受教了 03/25 12:31
cha122977:這例子用while這樣寫我覺得挺好的 可讀性也佳 03/25 12:33
abola921:依序出來使用Stack就錯了,當然在單執行緒下好像不會錯 03/25 16:46
abola921:依序吐,用ArrayList,LinkedList都可以,多序下用Vector 03/25 16:53
abola921:回一篇文章好了.. 03/25 16:59
abola921:想想是我誤會了,看到他用for以為他要使用get(i) 03/25 17:20
abola921:因為Stack.pop跟Stack.get 出來的順序相反 03/25 17:22
bantime:因為我的程式剛好需要後進先出 所以才選用stack 03/25 21:57
bantime:用ArrayList我是想不到有方法可以達成我要的效果 03/25 21:59
abola921:看你有沒有重覆使用這個變數的需求吧,有的話用Stack 03/26 10:18
abola921:for(int i=obj.size()-1;i>=0;i--){ obj.get(i); } 03/26 10:21
bantime:這個方法就能夠把用相反順序拿出了?是吧!如果我沒解讀錯 03/26 10:22
abola921:有一樣的輸出,只差在少了elements.delete及synchronized 03/26 10:23
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)
abola921:如果沒資源共享的需求,應該不會用到Stack 03/26 10:27
bantime:抱歉 我還沒學到資源共享@@ 03/26 10:31
PsMonkey:請不要一文多用,獨立問題請各自成篇 03/26 10:36
bantime:轉錄至看板 Sub_CS 03/28 02:58