2014-03-06 71 views
-1

我有一個foreach循環進入我的程序。我也有兩個公式:putPrice和callPrice。這裏是我的冷凝代碼:如何在foreach循環中使用變量公式?

public class CallObsArray{ 
    public static void main(String[] args) throws IOException { 
     String[] month = new String[]{"march","april","may"}; 
     String[] option = new String[]{"call","put"}; 
     for(String s: month){ 
      for(String t: option){ 

       if((callPrice - observedCall[k]) > 0){ 
        volatilityB = volatilityC; 
       } 
       else { 
        volatilityA = volatilityC; 
       } 
      }  
     } 
    } 
} 

當for循環是怎麼回事的「叫」串,我想我的程序使用callPrice上述公式,當它被「放」,公式我想if語句中的observedCall[k] - putPrice

+0

讀這就像你不知道這是什麼關於客觀和真正考慮你是如何清楚地表達你的問題,*提示:根本不清楚*格式也是可怕的,修復,當你重新寫你的問題! –

+0

這段代碼看起來不像應該編譯。 – Tyler

回答

1

使用字符串指定功能的問題是字符串不是類型安全的。你可以把你想要的任何數據放入String中,編譯器將無法告訴你是否犯了錯誤。

提高代碼類型安全性的一種方法是表示要執行的每種類型的函數。這是一種方法。

首先,定義一個接口:

public interface Formula { 
    public int compute(int observedCall, int price); 
} 

然後,創建一個接口的兩個實現;在這裏,他們完成的匿名內部類:

Formula callPriceFormula = new Formula() { 
    @Override 
    public int compute(int observedCall, int callPrice) { 
     return callPrice - observedCall; 
    } 
}; 

Formula putPriceFormula = new Formula() { 
    @Override 
    public int compute(int observedCall, int putPrice) { 
     return observedCall - putPrice; 
    } 
}; 

然後你就可以創建一個Formula[]由這兩個值,並在你的循環,你會打電話formula.compute(observedCall, price);

+0

請不要忘記接受一個答案,如果它幫助你思考你的問題。 –