java - 为什么这个 for 循环会遇到 ArrayIndexOtOfBounds 错误?(爪哇)
问题描述
我想要做的是让我的代码将整数转换为基数 2,然后将这些值转换为字符串数组中的元素。我试图避免使用 Integer.toBinary()。如果我能得到一些帮助,那将非常有帮助。
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);
a++;
}//end if
}//end while
}//end for
return convbases;
}//end streamChars
感谢您的时间!
解决方案
a
因为它在循环中使用和增加while (remainder > 0)
,而无需检查以确保a
仍然存在< convbases.length
。(顺便说一句,它convbases
在一个地方,但convBases
在另一个地方,这应该会阻止该代码甚至编译;Java 区分大小写。)
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
推荐阅读
- python - 在 Python 中使用 reg exp
- python - cx_Freeze 未正确将 python 程序转换为可执行文件
- javascript - 在 nativescript 中使用 tap 函数传递参数
- scala - 修复“在没有匹配数量的 createTmpFiles() 调用 jobId 的情况下不正确使用 releaseJob()”Flink
- php - Laravel 中的手动多重身份验证
- javascript - 如何将多个对象合并为一个?
- php - PHP命令行字符串添加
- python - 使用 Python 进行有效的滚动修剪均值
- python - 用张量流求解函数方程
- laravel-5 - 在 `AppServiceProvider` 类中使用 auth('api')->user() 时返回 null