2015-05-07 40 views
1
for (int i = 0; i < s.length(); i++) { 
     char c = s.charAt(i); 
     Token t; 
     StringBuilder sb; 
     if (Character.isDigit(c)) { 
      sb = new StringBuilder().append(c); 
      for (int j = i + 1; j < s.length(); j++) { 
       if (Character.isDigit(s.charAt(j))) { 
        sb.append(s.charAt(j)); 

       } else { 
        i = j-1; 
        break; 
       } 
      } 

本質上它需要經過一個字符串,並提取數字。有多個數字的號碼需要保持在一起。它在大多數情況下都這樣做,但如果多位數字在最後,它會將最後一位數字複製到新令牌中。 (令牌將數據存儲爲字符串,此代碼繼續檢查字母和變量。)For循環計數最後一次即使跳過

我認爲這是我的「其他」邏輯的問題,但不知道該怎麼做。

由於

編輯:樣品輸入:4 + J + 55
輸出:
+
Ĵ
+
----事我想停止

+1

我們可以看到一些樣本輸入和期望的輸出? – ChrisStillwell

+0

完成,對不起 – Shanseala

回答

2

看看這個例子中的字符串「12」,在外循環的第一次迭代中它會這樣做:

  • 支票,「1」是一個數字,並運行內環

  • 內環將追加「2」

  • 內循環將退出由於到達的端部串(但不調整的i的值)

  • 外環將遞增i,並期待在數字「2」

內環需要檢測的情況下「字符串的末尾」,並設置相應i

+0

...這就是我做錯了。我不需要else語句來處理迭代,如果內部循環附加,我只需要執行i ++。謝謝! – Shanseala