2011-01-13 62 views
0

我正在使用for循環將「m」添加到字符串數組,然後將每個字符串傳遞給DDE連接以下載股票報價。Java循環無法正確創建字符串

String[] symbols = {"AUDUSD", "EURUSD", "GBPUSD", "USDJPY"}; 

    String ibfxSym[] = new String[symbols.length]; 

    for(int i = 0; i<symbols.length;i++) { 
     ibfxSym[i] = symbols[i] + "m"; 

    } 
      // start DDE 
    for (int i = 0; i < connections.length; i++) { 
     try { 
      connections[i].getQuote(ibfxSym[i]); 
     } catch (Exception e) { 
      System.out.println("error"); 
     } 

這並不工作,但如果我在傳遞:

String[] ibfxSym = {"AUDUSDm", "EURUSDm", "GBPUSDm", "USDJPYm"}; 

,而不是循環它工作得很好。我試過打印每個字符串,因爲它是在循環中創建的,它們看起來是一樣的。有沒有一些奇怪的格式,循環添加,我看不到?我甚至嘗試過:

ibfxSym[i] = String.valueOf(ibfxSym[i].trim()); 

看看是否有可能是一個回車或東西被附加,我看不到。任何有關這裏發生了什麼問題的想法? 謝謝。

+1

你說,在循環後,該ibfxSym []數組不包含什麼你以爲會呢?除了getQuote(ibfxSym [i])外,不應該有任何回車符被追加,並且代碼似乎是正確的 - 是與數組大小相同的連接數? – Kylar 2011-01-13 19:00:22

+1

你確定`connections.length`與`ibfxSym.length`相同嗎? – Jeremy 2011-01-13 19:00:32

+1

「這不起作用」可能更具體。 – 2011-01-13 19:03:10

回答

2

你不能從你正在修改的同一陣列閱讀...

ibfxSym[i] = symbols[i] + "m"; 

for (int i = 0; i < connections.length; i++) { 
    try { 
     connections[i].getQuote(ibfxSym[i]); 

換句話說,你是假設i,從迭代connections衍生而來,也是一個有效的指標爲ibfxSym

0

您是否嘗試過這樣做:

for(int i = 0; i<symbols.length;i++) { 
    ibfxSym[i] = new String(symbols[i] + "m"); 

} 
1

如果

connections.length 

是大於

ibfxSym.length 

或在這種情況下,4,你應該得到一個數組索引的我認爲這是一個例外。

2

你的循環工作得很好,連接環,而不是隻會如果你的連接陣列,雖然地圖上的ibfxSym陣列工作..