【发布时间】:2016-12-22 14:08:39
【问题描述】:
我必须对二进制数求和,我正在使用反向循环,就像我们实际上使用笔和纸求和一样。所以有一个硬编码的两个整数数组,我将其长度设为相等以避免任何差异。我正在检查总和和进位值是否匹配,然后输出应该是 so & so 否则 so & so。检查下面的代码。
我的问题是为什么我在运行 Array Index Out of Bounds -1 时遇到错误,即使在成功编译之后也是如此。
public class binary{
static int sum, carry;
static int output = 0;
public static void main(String args[])
{
int[] a = {1,1,0,1,1,0,0,1,0,0,1};
int[] b = {1,0,0,0,0,0,0,0,1,0,1};
for(int i = 10; i >= 0; i--)
{
if(a[i] == 0 && b[i] == 0)
{
sum = 0;
carry = 0;
}
if(a[i] == 0 && b[i] == 1)
{
sum = 1;
carry = 0;
}
if(a[i] == 1 && b[i] == 0)
{
sum = 1;
carry = 0;
}
if(a[i] == 1 && b[i] == 1)
{
sum = 0;
carry = 1;
}
if(carry == 1)
{
carry += a[i-1] + b[i-1];
output = carry;
}
else
{
output += a[i] + b[i];
output = sum;
}
System.out.print(output);
}
}
}
【问题讨论】:
-
i-1carry += a[i-1] + b[i-1];中 i 为 0 时 -
在您的
if(carry ==1)中有i-1。当i=0这将是 att index-1-> 超出范围 -
你怎么看这两个代码相似。那是一个有序的循环。我正在使用反向循环。
-
代码不相似,但使用链接问题的答案,您会找到解决问题的方法
-
问题不在于代码的类型,但问题是一样的。越界就是越界,不管代码是什么,解决方案也是一样的——保持在界限内