2011-01-13 64 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阵列工作..