尝试在数组中放置值时,我得到一个不寻常的结果。 我有一个简单类结果的数组表[] {int score,long time,string ID} 意图是有一种领导委员会。 我的代码很高兴找到了插入新分数的正确位置,如果它位于前10名。
int ix = 0;
int jx = 10; //
while ( ix < jx )
{
if (points > sTable[ix].points)
{
// score is higher move records down
for (jx = mNumRecords - 1; jx >ix ; jx--)
{
sTable[jx] = sTable[jx -1];
}
//now add new score
sTable[ix].score = score; // all good until here
sTable[ix].time = time;
}
ix++;
}
问题是,当我尝试使用sTable [ix] .score = score;
插入乐谱时该值将写入sTable [ix] .score以及sTable [ix +1] .score。
它是可重复的,它出现在ix的任何值上,我单步执行代码,据我所知,命令只执行一次。
有没有人见过这个?
答案 0 :(得分:0)
那是因为您将对象引用复制到数组中的下一个元素。您应该复制值,或创建一个新对象:
选项A:
// score is higher move records down
for (jx = mNumRecords - 1; jx >ix ; jx--)
{
sTable[jx].time = sTable[jx -1].time;
sTable[jx].score = sTable[jx -1].score;
}
//now add new score
sTable[ix].score = score; // all good until here
sTable[ix].time = time;
选项B:
for (jx = mNumRecords - 1; jx >ix ; jx--)
{
sTable[jx] = sTable[jx -1];
}
sTable[ix] = new Result(score, time, ""); // Or however you construct the object