推 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