Я преподаю, как кодировать java, и я использую упражнения, которые я нахожу в Интернете, чтобы практиковать то, что я изучаю.Добавьте две строки, содержащие двоичные числа
Во всяком случае, я нахожусь в середине упражнения, которое просит меня создать метод, который получает две строки, содержащие только символы «0» и «1» от пользователя и возвращает одну строку из них как (двоичный) комбинированный
пример:
BinaryAdder("0","0") - > "0"
BinaryAdder("1","1") - > "10"
BinaryAdder("10100","111") - > "11011"
, что я сделал это:
import java.util.Scanner;
public class assigment03
{
private static String whichIsBigger(String a, String b)
{
if(a.length()>b.length())
return a;
if(a.length()<b.length())
return b;
if(a.length()==b.length())
return a;
else return null;
}
private static String binaryAdder(String a,String b)
{
int[] binaryResult= new int[maxlength(a,b)+1];
String result="";
if(whichIsBigger(a,b)==a)
{
for(int i=0;i<b.length();i++)
{
binaryResult[i]=a.charAt(i)+b.charAt(i);
}
for(int i=b.length();i<a.length();i++)
{
binaryResult[i]+=a.charAt(i);
}
}
else
{
for(int i=0;i<a.length();i++)
{
binaryResult[i]=b.charAt(i)+a.charAt(i);
}
for(int i=a.length();i<b.length();i++)
{
binaryResult[i]+=b.charAt(i);
}
}
for(int i=0;i<binaryResult.length-1;i++)
{
if(binaryResult[i]>=2)
{
binaryResult[i]=binaryResult[i]%2;
binaryResult[i+1]++;
}
}
for(int i=binaryResult.length-1;i>=0;i--)
{
result+=Integer.toString(binaryResult[i]);
}
return result;
}
private static int maxlength(String a, String b)
{
if(a.length()>b.length())
return a.length();
else
return b.length();
}
public static void main(String[] args)
{
Scanner temp= new Scanner(System.in);
System.out.print(binaryAdder(temp.next(),temp.next()));
}
}
Но он не возвращает правильный результат. Не могли бы вы помочь мне здесь?
спасибо большое!
Разве вы не можете просто анализировать как целое, добавить и скрывать обратно в двоичный файл? – arshajii
Вы не можете использовать 'a.charAt (i) + b.charAt (i)' - это дает значение ASCI для 'char'. –
несколько советов при сравнении значений String никогда не используйте оператор ==, вместо этого используйте метод equals(), так как оператор == сравнивает 2 объекта в памяти, а метод equals() сравнивается, если оба объекта значимо равны или нет (даже если оба являются двумя разными объектами в памяти), во-вторых, при использовании if-else всегда используйте фигурные скобки, чтобы сделать ваш код более удобным для чтения, а также проще в обслуживании. –