【发布时间】:2019-07-19 06:15:53
【问题描述】:
所以我一直在为这个任务苦苦挣扎,我必须编写一个 java 代码来将 2 个二进制数作为字符串相乘。我不知道如何将它们相乘并将它们保存在单独的字符串中,以便我可以在最后添加它们。有人可能会给我一些提示,我该如何开始或类似的东西? 我必须对给定的字符串进行乘法运算,并且不能将它们转换为整数。我知道如何在纸上进行乘法运算,但不知道如何将其放入代码中。 到目前为止,这是我的代码。
public static String multiply(String binary1, String binary2) {
String b1 = new StringBuilder(binary1).reverse().toString();
String b2 = new StringBuilder(binary2).reverse().toString();
int[] m = new int[binary1.length()+binary2.length()];
for (int i = 0; i < binary1.length(); i++) {
for (int j = 0; j < binary2.length(); j++) {
m[i+j] += (b1.charAt(i)-'0')*(b2.charAt(j)-'0');
}
}
StringBuilder sb = new StringBuilder();
for(int i=0; i < m.length; i++) {
int mod = m[i]%10;
int carry = m[i]/10;
if (i+1 < m.length) {
m[i + 1] = m[i + 1] + carry;
}
sb.insert(0, mod);
}
// remove front zeros
while (sb.charAt(0) == '0' && sb.length() > 1) {
sb.deleteCharAt(0);
}
return sb.toString();
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("1. Factor: ");
String input1 = scan.next("(0|1)*");
System.out.print("2. Factor: ");
String input2 = scan.next("(0|1)*");
scan.close();
System.out.println("Result: " + multiply(input1, input2));
}
【问题讨论】:
-
你会如何在纸上用非二进制数来做呢?假设您想乘以
135x323。你会如何处理它? -
欢迎使用 Stack Overflow。只要您愿意提出可以显示研究成果的好问题,您就可以在这里获得很多帮助。在这种情况下,我想知道您有什么代码,或者您是否有代码。我们不会从头开始教你 Java。
-
你需要实现long multiplication。
-
这里提示一下,为了将二进制字符串转成int,可以使用Integer.parseInt("1001101100", 2)。我相信这是您真正想要的,其他 cmets 假设您正在评估长乘法,但也许这就是您想要的。
-
到目前为止,您尝试了什么?什么对你不起作用?向我们展示您的代码。好的,如果您正在寻找从哪里开始:youtube.com/watch?v=QW0XNZPyWUk