Цикл Java не создает строку правильно - PullRequest
0 голосов
/ 13 января 2011

Я использую цикл 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 ]

2 голосов
/ 13 января 2011

Ваш цикл работает просто отлично, вместо этого цикл соединения будет работать, только если ваш массив соединений отображает ваш массив ibfxSym, хотя ..

2 голосов
/ 13 января 2011

Вы не читаете из того же массива, который изменяете ...

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

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

Другими словами, вы предполагаете, что i, полученное из итерации по connections, также является допустимым индексом для ibfxSym.

1 голос
/ 13 января 2011

если

connections.length

больше

ibfxSym.length

или в этом случае 4, я думаю, вы должны получить индекс массива за исключением границ.

0 голосов
/ 13 января 2011

Вы пытались сделать это:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...