2 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
在 a 達(dá)到 colAvgs 值之前,余數(shù)不會(huì)變?yōu)?0,之后嘗試訪問 convbases[a] 會(huì)崩潰。
您的 while 應(yīng)考慮到 a 不能高于或等于 colAvgs。
int size = colAvgs.length;
for (int a =0;a<size;a++)
{
remainder = colAvgs[a];
while(remainder>0 && a<size)
{
remainder = remainder%2;
if ((remainder%2)==0|| (remainder%2)==1)
{
convbases[a] = Integer.toString(remainder);
a++;
}//end if
}//end while
}//end for
if(remainder>0) //you know it finished due to a being too big.
else //this is what you want to happen
但是,我認(rèn)為重要的是要注意,最好不要修改 for 循環(huán)內(nèi)的循環(huán)變量,因?yàn)檫@是 for 工作的一部分。您不應(yīng)該a++在 while 循環(huán)內(nèi)執(zhí)行此操作。當(dāng)您確切知道循環(huán)將運(yùn)行的迭代次數(shù)時(shí),可以使用 for 循環(huán)。你這里沒有這些信息。因此,您應(yīng)該更改循環(huán)條件(在本例a<size中是啟動(dòng) for 循環(huán)時(shí)),或者改用 while 循環(huán)。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
因?yàn)樗黙在while (remainder > 0)循環(huán)內(nèi)使用并增加,而無需檢查以確保a仍然存在< convbases.length。(順便說一句,它c(diǎn)onvbases在一個(gè)地方,但convBases在另一個(gè)地方,這應(yīng)該會(huì)阻止該代碼編譯;Java 區(qū)分大小寫。)
public String[] streamChars(int[] colAvgs)
{
String avgString = Arrays.toString(colAvgs);
String convBases[] = avgString.split(",");
int remainder;
for (int a =0;a<colAvgs.length;a++)
{
remainder = colAvgs[a];
while(remainder>0)
{
remainder = remainder%2;
if ((remainder%2)==0|| (remainder%2)==1)
{
convbases[a] = Integer.toString(remainder);
// ^^^^^^^^^^^^------------------------------------- using it
a++;
// ^^^^--------------------------------------------- incrementing it
}//end if
}//end while
}//end for
return convbases;
}//end streamChars
添加回答
舉報(bào)