Java 添加带点的二进制值,但不带快捷方式
我有一个学校项目,在java中添加2个二进制数。二进制数也可以有十进制值。Java 添加带点的二进制值,但不带快捷方式,java,Java,我有一个学校项目,在java中添加2个二进制数。二进制数也可以有十进制值。 示例-10.01+10.01=100.1 我不能使用Integer.parseInt(str,基数)这样的快捷方式;(这些项目真的很糟糕)……:'( 我只需要使用字符串和其他东西。我尝试了以下代码,但我在中途迷路了,尤其是要克服小数点对我来说几乎是不可能的:- String a = "101"; String b = "101"; for(int i=0;i<a.length() || i<b.lengt
示例-10.01+10.01=100.1
我不能使用Integer.parseInt(str,基数)这样的快捷方式;(这些项目真的很糟糕)……:'(
我只需要使用字符串和其他东西。我尝试了以下代码,但我在中途迷路了,尤其是要克服小数点对我来说几乎是不可能的:-
String a = "101";
String b = "101";
for(int i=0;i<a.length() || i<b.length();i++){
int digit1 = Integer.parseInt(a.substring(a.length()-1));
int digit2 = Integer.parseInt(b.substring(b.length()-1));
if(digit1 == 0 && digit2 ==0 && carry == 0) {sum = 0;carry = 0;}
if(digit1 == 0 && digit2 ==1 && carry == 0) {sum = 1;carry = 0;}
if(digit1 == 1 && digit2 ==0 && carry == 0) {sum = 1;carry = 0;}
if(digit1 == 1 && digit2 ==1 && carry == 0) {sum = 0;carry = 1;}
if(digit1 == 0 && digit2 ==0 && carry == 1) {sum = 1;carry = 0;}
if(digit1 == 0 && digit2 ==1 && carry == 1) {sum = 0;carry = 1;}
if(digit1 == 1 && digit2 ==0 && carry == 1) {sum = 0;carry = 1;}
if(digit1 == 1 && digit2 ==1 && carry == 1) {sum = 1;carry = 1;}
...//could not continue further
String a=“101”;
字符串b=“101”;
对于(int i=0;i这是工作代码:
注意:我刚刚向您演示了如何添加这些数字。如果您的第一个二进制数有(比如)4位,而第二个二进制数有(比如)10位,则显然此代码不起作用!您必须检查该条件并添加相应的代码。我假设两个数字具有相同的数字。
还要注意for循环条件的变化!
公共类ADDBinary{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
字符串num1=“1101”;
字符串num2=“1010”;
字符串sum=“”;
整数进位=0;
对于(int i=0;i
}
我使用了相同的条件!首先,一些提示。
查看您的代码,我可以看到八个格式相同的。这称为代码重复,需要避免。您基本上是反复输入相同的行,这对您来说是一项更大的工作,使您的代码可读性、适应性和可维护性较差。如果您遇到需要多次执行的操作,以稍微不同的方式,制作一种新的方法来实现这一点
你说它们可以有十进制值。这不是很好的术语,十进制意味着base10。基点是我们在base10中所称的小数点,但因为我们使用的是base2,所以十进制不适用,所以我们称之为基点
关于你的问题:
(删除此内容是因为NullPointer比我快了一步。)你的实际问题是什么?只要写下8个可能的情况,然后继续一个接一个地添加最后的数字!@Nullpointer我想问题很清楚。这是关于二进制加法的。你可以在这里学习二进制加法->我知道如何添加二进制数..但我不明白你被困在哪里了?为什么你不能一个接一个地添加数字?@Nullpoi恩,在过去的一个小时里,我一直在尝试。但是我迷路了。所以我请求帮助(
public class ADDBinary {
public static void main(String[] args) {
// TODO Auto-generated method stub
String num1 = "1101";
String num2 = "1010";
String sum = "";
int carry = 0;
for (int i = 0; i < num1.length() && i < num2.length(); i++) {
System.out.println("In for loop");
char digit1, digit2;
digit1 = num1.charAt(num1.length() - i - 1);
digit2 = num2.charAt(num2.length() - i - 1);
System.out.println("Digits="+digit1+digit2);
if (digit1 == '0' && digit2 == '0' && carry == 0) {
sum = sum + "0";
carry = 0;
} else if (digit1 == '0' && digit2 == '1' && carry == 0) {
sum = sum + "1";
carry = 0;
} else if (digit1 == '1' && digit2 == '0' && carry == 0) {
sum = sum + "1";
carry = 0;
} else if (digit1 == '1' && digit2 == '1' && carry == 0) {
sum = sum + "0";
carry = 1;
} else if (digit1 == '0' && digit2 == '0' && carry == 1) {
sum = sum + "1";
carry = 0;
} else if (digit1 == '0' && digit2 == '1' && carry == 1) {
sum = sum + "0";
carry = 1;
} else if (digit1 == '1' && digit2 == '0' && carry == 1) {
sum = sum + "0";
carry = 1;
} else if (digit1 == '1' && digit2 == '1' && carry == 1) {
sum = sum + "1";
carry = 1;
}
}
if(carry == 1)
sum = sum + "1";
System.out.println(new StringBuilder(sum).reverse().toString());
}