Java循环无法正确创建字符串
问题描述:
我正在使用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());
看看是否有可能是一个回车或东西被附加,我看不到。任何有关这里发生了什么问题的想法? 谢谢。
答
你不能从你正在修改的同一阵列阅读...
ibfxSym[i] = symbols[i] + "m";
for (int i = 0; i < connections.length; i++) {
try {
connections[i].getQuote(ibfxSym[i]);
换句话说,你是假设i
,从迭代connections
衍生而来,也是一个有效的指标为ibfxSym
。
答
您是否尝试过这样做:
for(int i = 0; i<symbols.length;i++) {
ibfxSym[i] = new String(symbols[i] + "m");
}
答
如果
connections.length
是大于
ibfxSym.length
或在这种情况下,4,你应该得到一个数组索引的我认为这是一个例外。
答
你的循环工作得很好,连接环,而不是只会如果你的连接阵列,虽然地图上的ibfxSym阵列工作..
你说,在循环后,该ibfxSym []数组不包含什么你以为会呢?除了getQuote(ibfxSym [i])外,不应该有任何回车符被追加,并且代码似乎是正确的 - 是与数组大小相同的连接数? – Kylar 2011-01-13 19:00:22
你确定`connections.length`与`ibfxSym.length`相同吗? – Jeremy 2011-01-13 19:00:32
“这不起作用”可能更具体。 – 2011-01-13 19:03:10