2013-02-12 65 views
3

我是Java新手,我有4個int堆棧,需要以特定方式打印出來。我正在使用的IDE是BlueJ。格式化java字符串以查找特定方式

我要打印的陣列看起來像下面

|110| |231| |333| |444| 
|111| |232| |334| |447| 
|112| |233| |335| |448| 
|113| |234| |336| |449| 
|114| |235| |337| |450| 
|115| |236| |338| |451| 

我想這跟System.out.println("|"+stack1.pop()+"|")而是因爲我不知道如何從底部往回走,回到它創建了一個問題最佳。防爆。 115 - >備份到231.每列代表一個堆棧。

謝謝!

+0

爲什麼Android標籤?這似乎純粹是Java,特別是因爲你使用的是BlueJ和'println()' – 2013-02-12 03:51:32

+0

@ A - C我最終會轉移到Android,所以我錯誤地將它包含在那裏。我真的不認爲這是值得的投票 – 2013-02-12 03:52:36

+0

我*沒有* downvote你(因爲這是一個小錯誤),但我* * *刪除標籤。 – 2013-02-12 03:53:23

回答

3

使用String.format()優於連接一串字符串

System.out.println(String.format("|%s|\t|%s|\t|%s|\t|%s|", 
          stack1.pop(),stack2.pop(),stack3.pop(),stack4.pop())); 

如果你要打印的Stack元素以相反的順序,只是reverse堆棧第一

+1

您也可以用指定數量的空格填充每個字符串(而不是使用製表符號)。 – jahroy 2013-02-12 04:18:25

+0

@itech爲什麼在編譯期間擔心字符串連接,那些'+'將僅僅被StringBuilder的append()取代並且非常快速 – exexzian 2013-02-12 04:25:43

+0

它依賴於編譯器實現,並且不需要在最高效的方式。此外,使用'String.format'更具可讀性,並且可以更好地控制輸出的格式 – iTech 2013-02-12 04:29:54

2

你不會成爲能夠做到這一點在控制檯:
作爲替代,你可以從每個堆棧打印值,然後向下移動,如:

System.out.println("|"+stack1.pop()+"|\t|"+stack2.pop()+"|\t|"+stack3.pop()+"|\t|"+stack4.pop()+"|"); 

編輯 的評論 - 你可以使用String.format(...),檢查here以獲得可用的格式選項

+0

@jahroy我不認爲我們仍然能夠回到第一行 - 即使我們使用String.fortmat,如果我錯了,請隨時舉例 – exexzian 2013-02-12 04:18:32

+0

對不起...我重讀了問題發表後,刪除它。 – jahroy 2013-02-12 04:23:16

0

如何:

ArrayList<Stack<Integer>> arrays=new ArrayList<Stack<Integer>>(); 
    arrays.add(stack1); 
    arrays.add(stack2); 
    arrays.add(stack3); 
    arrays.add(stack4); 

//Put some code here to Determine the stack size, if all are unequal in size 
    int size=stack1.size(); 


    for(int i=0;i<size;i++){ 
     String value=""; 
     String temp=""; 

// 4 =如果你知道的數堆棧將只有4個

 for(int j=0;j<4;j++){ 

      //Handle here Empty Stack Exception and print blank 
      value="|"+(String)(arrays.get(j)).pop().toString()+"|"+" "; 
      temp=temp+value; 


     } 

     System.out.println(temp); 



    }