递归地添加两个二进制数,不进行逐位操作;Java作业
我想我已经找到了解决家庭作业问题的方法 这是针对201 CS类的。现在我只想把逻辑弄对。目前,它并没有按预期运行,但已经接近 我们不想使用。toBinary、bitwise或其他任何东西。我们还没有学过stringBuilder,所以我想避免使用它 有一个系统。out.println();如果您从下到上阅读控制台,则在提供正确答案的方法中递归地添加两个二进制数,不进行逐位操作;Java作业,java,Java,我想我已经找到了解决家庭作业问题的方法 这是针对201 CS类的。现在我只想把逻辑弄对。目前,它并没有按预期运行,但已经接近 我们不想使用。toBinary、bitwise或其他任何东西。我们还没有学过stringBuilder,所以我想避免使用它 有一个系统。out.println();如果您从下到上阅读控制台,则在提供正确答案的方法中 public static void main(String[] args) { System.out.println(addBin(110
public static void main(String[] args) {
System.out.println(addBin(1100111011,1101110011));
}
public static String addBin(int num1,int num2){
String result = "";
if(num1 > 0 || num2 > 0){
int part1 = num1%10, part2 = num2%10;
int rem1 = num1/10, rem2 = num2/10;
result += Integer.toString((part1 + part2)%2);
//System.out.println(result);
int carry = (part1 + part2) /2;
addBin(rem1 + carry, rem2);
return result;
}
return result;
}
因此,本例将1100111011和1101110011与输出相加
0
1
1
1
0
1
0
1
0
1
1
0
当正确答案为11010101110时
我很难理解如何正确地“弹出”结果部分。你能帮我理解这个过程吗,可能是在这个问题的背景下
谢谢 从输出中可以看出,您正以相反的顺序获得正确的结果,但您没有将任何旧结果附加到当前正在计算的结果 在if条件中,调用addBin()函数,但不使用它在任何地方给出的结果。只需将该行更改为以下内容:
result = addBin(rem1 + carry, rem2)+result;
这将有效地将您的所有结果附加到当前答案之前,这样您就不会得到反向的结果。希望这有帮助。您想要
System.out.println(addBin(0b1100111011,0b1101110011))代码>?我不知道。这些是表面上直接从用户输入接收的“二进制”数字。比如,我应该能够在扫描仪中从某处获取这些数字。addBin
返回一个值;您应该使用该返回值。这可能有助于不创建<代码>结果< /代码>变量,而只是考虑两个值<代码> AddiBin(ReM1+Road,ReM2)< /C>和<代码>整型.toStand((PAR1+PAT2)% 2)< /代码>,得到它!谢谢你的帮助。我误解了怎么做<代码>字符串结果=addBin(rem1+进位,rem2)+整数.toString((part1+part2)%2)代码>使用字符串获取用户输入而不是int!