2014-01-30 89 views
1

首先,我想先說我不只是在尋找某人給我這個問題的答案,我是一名初學者程序員,我只是想學習儘可能多。對我的代碼的批評以及對正確方向的友好推動將非常感謝!真正讓我困惑的是我的stringParser方法。我使用這種方法遍歷字符串,挑出數字並將它們存儲在一個新字符串中進行解析。令我困惑的是如何將這些數字加在一起?這裏是代碼:Java:將字符串解析爲int並計算總和

public static int stringParser(String parsee,int parsed) 
{ 
    int indexOfString = parsee.indexOf("=");   //Searches for an = sign since there has to be one 
    String parsee2 = ""; 
    int [] newArray; 
    String subStringParse = parsee.substring(0,indexOfString);  //Substring made to divide string, this one is from 0 index to 1st occurence of = 
    for(int i = 0;i<subStringParse.length();i++) 
    { 
     if(Character.isDigit(subStringParse.charAt(i)))  //if the value is a number it is stored in a new string then parsed. 
     { 
      parsee2+= subStringParse.charAt(i); 
      parsed = Integer.parseInt(parsee2); 

     }   
    }   return parsed; 

} 
public static int sumInts(int a,int storedSums) 
{ 
    //a = new int[20]; 
    for(int i=0;i<a;i++) //loops through parsed string from stringParser 
    { 
     storedSums += a;   //creates a new value calculating sum 
    } 
    return storedSums; 
} 
+0

你能提供一個例子輸入字符串? –

+0

感謝您的迴應!用戶輸入字符串的示例如下所示:1 + 2 = 3 + 4 = 5 + -6 =。輸出將是:SUM = 3 SUM = 7 SUM = -1。目標是計算每個'='符號前的值的總和。 – user3251584

回答

0

根據我的猜測,你想解析這樣的`12 + 34 ='。

如果我是對的,那麼你的循環是完全錯誤的。它將只返回34作爲整數值。你可以調試你的代碼。

我建議你這樣的事情:

int index = 0; 
for(int i = 0;i<subStringParse.length();i++) 
{ 
    if(Character.isDigit(subStringParse.charAt(i)))  //if the value is a number it is stored in a new string then parsed. 
    { 
     parsee2+= subStringParse.charAt(i); 
     parsed = Integer.parseInt(parsee2); 
    }   
    newArray[index++] = parsed; //make sure you initialize newArray. 
}  
return newArray; 
+0

感謝您的回覆!我實際上是想盡早使用數組,但是我在解析後的if語句中鍵入它,這可能會讓它變得混亂。 – user3251584

+0

如果您使用任何IDE,那麼調試代碼是找出錯誤的最佳選擇。歡呼聲 –

0

嘗試,

String parsee = "12+13 = 34+45 = 45+-45"; 
int value = 0; 
String parsed = ""; 
for(String exp : parsee.split("=")){    
    for(String val : exp.trim().split("\\+")){ 
     value+=Integer.parseInt(val); 
    } 
    parsed+=" SUM = "+value; 
    value = 0; 
} 
System.out.println(parsed); 

輸出

SUM = 25 SUM = 79 SUM = 0 
+0

謝謝你的回覆!我從來沒有見過':'之前在for循環中使用,它是否與';'具有相同的功能? – user3251584

+0

它爲每個循環調用更多關於http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html –

+0

請看http://www.leepoint.net/notes-java/流量/循環/ foreach.html –