2016-01-06 39 views
0

我正在嘗試製作計算器應用程序,並且輸入了最終方程的字符串。 「983 + 388 + 12」 我要如何解決問題,首先要確定操作員在哪裏。在此之後,我會前後循環嘗試查找2個數字,然後添加它們。所以我會找到983和388的加號,並加上它們。我無法匹配與添加符號相關的前一個/下一個數字。無法找到循環中的Java子字符串

public static void main(String[] args) 
{ 
    int plus=0; 
    String string="983+388+12"; 

    //locating Plus symbol 
    for(int i=0;i<string.length();i++) 
    { 
     if(string.charAt(i)=='+') 
     { 
      plus=i; 
     } 
    } 

    //locating next number (should be 388) 
    for(int i=plus+1;i<string.length();i++) 
    { 
     if(string.charAt(i)=='+' || string.charAt(i)=='-') 
     { 
      String nextNumber=string.substring(plus+1, i-1); 
      System.out.println(nextNumber); 
      break; 
     } 
    } 

,我沒有得到任何東西返回作爲nextNumber

回答

5

的值。當你發現在第一循環的+,你不停止掃描的字符串。這導致plus標記最後一個+的位置,它位於388之後和12之前。第二個循環在最後一個+之後從未找到+-,因此不會打印任何內容。當你找到第一個+,break出循環。

此外,爲避免剛38被人發現,糾正你的substring通話,這樣的結局指數獨家

String nextNumber = string.substring(plus + 1, i); 
+0

非常感謝(y) –

0

你可以嘗試這樣的事情:

String example = "123+456+678"; 
String delim = "+"; 
StringTokenizer st = new StringTokenizer(example,delim); 
while (st.hasMoreElements()) { 
    System.out.println("StringTokenizer Output: " + st.nextElement()); 
} 
1

嘗試使用只有一個迴路,見下面的(工作示例)。我沒有把任何東西分解成更小的方法。

public static void main(String[] args) { 
    String string="983+388+12"; 
    String numberStr="0"; 
    int lastSignPos = 0; 
    int signPos=0; 
    char sign = '+'; 
    int total=0; 

    //locating Plus symbol 
    for(int i=0; i < string.length(); i++) { 
     if(string.charAt(i)=='+' || string.charAt(i)=='-') { 
      lastSignPos = signPos; 
      signPos = i; 
      numberStr = "0"; 

      if (lastSignPos == 0){ 
       // first number in series 
       numberStr = string.substring(0,signPos); 
      } else { 
       numberStr = string.substring(lastSignPos + 1, signPos); 
      } 

      sign = '+'; 
      if (string.charAt(lastSignPos)=='-'){ 
       sign = '-'; 
      } 

      total += Integer.parseInt(sign + numberStr); 
     } 
    } 

    // take care last number 
    numberStr = string.substring(signPos+1); 
    sign = '+'; 
    if (string.charAt(signPos)=='-'){ 
     sign = '-'; 
    } 

    total += Integer.parseInt(sign + numberStr); 

    System.out.println(total); 
}