rozpoznajD,O,M是double [1],裏面只有一個double。爲什麼數組覆蓋之前的值
progD,O,M是常數atm(0.5)。
int i = 0
foreach循環之前。
在循環之前聲明的一些附加變量:
double[] rozpoznajD, rozpoznajO, rozpoznajM;
trzysiecitab[] valid = new trzysiecitab[ileObrazkow * 3];
double[] progD, progO, progM;
progD = new double[] { 0.5 };
progO = new double[] { 0.5 };
progM = new double[] { 0.5 };
rozpoznajD = new double[1];
rozpoznajO = new double[1];
rozpoznajM = new double[1];
問題是,在每一個步驟(每文件名)陣列有效覆蓋它的先前值。爲什麼會發生?
換句話說:在循環結束後,每個字段都有最後一個文件名的值。
下面的代碼:
foreach(string filename in files) {
bmp1 = new Bitmap(Image.FromFile(filename));
rozpoznajD = ssn1.policzWyjscia(Pomocnicze.binaryzacja(bmp1));
rozpoznajO = ssn2.policzWyjscia(Pomocnicze.binaryzacja(bmp1));
rozpoznajM = ssn3.policzWyjscia(Pomocnicze.binaryzacja(bmp1));
if (filename.EndsWith("d.bmp")) {
if (rozpoznajD[0] > progD[0]) valid[i] = new trzysiecitab(rozpoznajM, 1, 'd');
else valid[i] = new trzysiecitab(rozpoznajM, 0, 'd');
if (rozpoznajO[0] < progO[0]) valid[i + 1] = new trzysiecitab(rozpoznajO, 1, 'o');
else valid[i + 1] = new trzysiecitab(rozpoznajO, 0, 'o');
if (rozpoznajM[0] < progM[0]) valid[i + 2] = new trzysiecitab(rozpoznajM, 1, 'm');
else valid[i + 2] = new trzysiecitab(rozpoznajM, 0, 'm');
i += 3;
} else if (filename.EndsWith("o.bmp")) {
if (rozpoznajD[0] < progD[0]) valid[i] = new trzysiecitab(rozpoznajM, 1, 'd');
else valid[i] = new trzysiecitab(rozpoznajM, 0, 'd');
if (rozpoznajO[0] > progO[0]) valid[i + 1] = new trzysiecitab(rozpoznajO, 1, 'o');
else valid[i + 1] = new trzysiecitab(rozpoznajO, 0, 'o');
if (rozpoznajM[0] < progM[0]) valid[i + 2] = new trzysiecitab(rozpoznajM, 1, 'm');
else valid[i + 2] = new trzysiecitab(rozpoznajM, 0, 'm');
i += 3;
} else if (filename.EndsWith("m.bmp")) {
if (rozpoznajD[0] < progD[0]) valid[i] = new trzysiecitab(rozpoznajM, 1, 'd');
else valid[i] = new trzysiecitab(rozpoznajM, 0, 'd');
if (rozpoznajO[0] < progO[0]) valid[i + 1] = new trzysiecitab(rozpoznajO, 1, 'o');
else valid[i + 1] = new trzysiecitab(rozpoznajO, 0, 'o');
if (rozpoznajM[0] > progM[0]) valid[i + 2] = new trzysiecitab(rozpoznajM, 1, 'm');
else valid[i + 2] = new trzysiecitab(rozpoznajM, 0, 'm');
i += 3;
}
}
這不只要第2名是解決問題,發生重寫正在努力。 – Januszoff 2015-03-02 21:02:05