Это мой код для добавления к двоичным строкам, я получаю правильное значение в строке res
, но он по-прежнему дает мне исключение в конце выполнения. Строки m1
& m2
имеют длину 28 штук. Тем не менее я попытался запустить цикл всего 10 раз, чтобы проверить, но ошибка по-прежнему сохраняется. Это справедливо для любого значения i
, независимо от того, больше или меньше фактической длины обеих строк.String index за пределами поля
public static String addMantissa(String m1,String m2)
{
String res=" ";
int c=0;
System.out.println("Length is " + m2.length());
int i=0;
while(i < m2.length())
{
System.out.print(" " + res.charAt(i));
if(m1.charAt(i)=='1' && m2.charAt(i)=='1')
{
if(c==0)
{
res+="0";
c=1;
}
else
{
res+="1";
c=1;
}
}
if(m1.charAt(i)=='1' && m2.charAt(i)=='0')
{
if(c==0)
{
res+="1";
c=0;
}
else
{
res+="0";
c=1;
}
}
if(m1.charAt(i)=='0' && m2.charAt(i)=='1')
{
if(c==0)
{
res+="1";
c=0;
}
else
{
res+="0";
c=1;
}
}
if(m1.charAt(i)=='0' && m2.charAt(i)=='0')
{
if(c==0)
{
res+="0";
c=0;
}
else
{
res+="1";
c=0;
}
}
i++;
}
return res;
}
Заранее благодарен.
Можете ли вы опубликовать свою фактическую ошибку и трассировку. – TheMerovingian
Что такое вход (m1 & m2)? –
Эти средние 2 операторы if могут быть заменены на 1, если вы разделяете условия с помощью OR ('||') или немного более хаки - 'm1.charAt (i) + m2.charAt (i) == ' 1 '+' 0'', или 'm1.charAt (i) - '0' + m2.charAt (i) - '0' == 1'. И я бы заменил те 'charAt' на временные переменные (с вычитанием' 0''). – Dukeling