2013-10-12 32 views
-4

爲什麼我的代碼不能按預期工作? 試圖檢查stack.Count> 0並且它不能正常工作堆棧計數不正常

toShort(「../../../ z」)返回「../z」,但它應該返回「。 ./../../z」 UPDATE:

static String toShort(String path) 
    { 
     String[] elements = path.Split('/'); 
     String result = ""; 
     Stack<String> stack = new Stack<String>(); 
     for (int i = 0; i < elements.Length; i++) 
     { 
      if (stack.Count>0&&elements[i].Equals("..")) 
       stack.Pop(); 
      else 
       stack.Push(elements[i]); 
     } 
     List<String>list = new List<String>(); 

     foreach (String str in stack) 
      list.Add(str); 
     list.Reverse(); 
     int n = list.Count; 
     for (int i = 0; i < n; i++) 
      if (i != n - 1) 
       result += list[i] + "/"; 
      else 
       result += list[i]; 

     return result; 
    } 
+1

它是做什麼的?你期待它做什麼? – Lee

+0

你想用頂級條件做什麼? –

+1

如果您告訴我們您期望它做什麼以及它實際在做什麼,那麼回答您的問題會更容易。還有什麼'元素'數據類型是什麼,它是什麼。 – RBarryYoung

回答

2

你的程序是做什麼你告訴它做的事。該堆棧正常工作。第二個..導致第一個..被刪除。如果您在調試器中完成程序,您會注意到這一點。