我正在使用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());
看看是否有回车或附加的东西,我看不到。关于这里出了什么问题的任何想法? 感谢。
答案 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");
}