Java循环没有正确创建字符串

时间:2011-01-13 18:56:26

标签: java arrays string loops for-loop

我正在使用for循环将“m”附加到字符串数组,然后将每个字符串传递给DDE连接以下载股票报价。

    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());

看看是否有回车或附加的东西,我看不到。关于这里出了什么问题的任何想法? 感谢。

4 个答案:

答案 0 :(得分:2)

你没有从你正在修改的同一个数组中读取...

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

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

换句话说,您假设从i迭代派生的connections也是ibfxSym的有效索引。

答案 1 :(得分:2)

你的循环工作正常,只有当你的连接数组映射你的ibfxSym数组时,连接循环才会起作用。

答案 2 :(得分:1)

如果

connections.length

大于

ibfxSym.length

或者在这种情况下4,你应该得到一个超出界限的数组索引。

答案 3 :(得分:0)

您是否尝试过这样做:

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

}