I am new here as well as I am new in the Java Developpment. I know pretty good C++ and now I start to learn Java.
I imagined by myself to write a short binary number adder, Hamming Distance function and counting ones (simplest problem as I could have imagined) just to gain some experience in Java. Actually it's my first program written in Java excluding some examples from Internet, books etc. (Of course it works well) :
public class MyClass {
public static void main(String[] args)
{
String test="111110111111";
String test1="111111111111";
BinaryNumber Ntest = new BinaryNumber(test);
BinaryNumber Ntest1 = new BinaryNumber(test1);
BinaryNumber suma = Ntest.sum(Ntest1);
suma.DisplayNumber();
}
}
class StringNumber
{
public StringNumber(String n)
{
this.num_length=n.length();
this.n_string=n;
Numbers=new int[num_length];
StringToIntArray();
}
public StringNumber(int[] t)
{
this.num_length=t.length;
Numbers=new int[num_length];
this.Numbers=t;
}
private void StringToIntArray()
{
for(int i=0;i<n_string.length();++i)
{
Character c = new Character(n_string.charAt(i));
String str = c.toString();
int temp = Integer.parseInt(str);
Numbers[i]=temp;
}
}
public void DisplayNumber()
{
for(int i=0; i<this.Numbers.length; ++i)
System.out.print(this.Numbers[i]);
}
protected int[] Numbers;
private String n_string;
private int num_length;
}
//-----------------------------------------------------------------------------------------------------------------------//
class BinaryNumber extends StringNumber
{
public BinaryNumber(String n) {
super(n);
}
public BinaryNumber(int[] t)
{
super(t);
}
public int Hamming(BinaryNumber b)
{
if(b.Numbers.length==this.Numbers.length)
{
for(int i=0; i<b.Numbers.length; ++i)
if(b.Numbers[i]!=this.Numbers[i]) ++HammingsDistance;
} else
{HammingsDistance=-1;}
return HammingsDistance;
}
public BinaryNumber sum(BinaryNumber a)
{
int CarryIn = 0, CarryOut = 0, Nbits=this.Numbers.length,sum,j;
int[] Bin = new int[Nbits+1];
for(int i=Nbits-1; i>=0; --i)
{
sum=this.Numbers[i]+a.Numbers[i]+CarryIn;
switch(sum)
{
case 0:
CarryOut=0;
Bin[i+1]=0;
break;
case 1:
CarryOut=0;
Bin[i+1]=1;
break;
case 2:
CarryOut=1;
Bin[i+1]=0;
break;
case 3:
CarryOut=1;
Bin[i+1]=1;
break;
}
CarryIn=CarryOut;
}
Bin[0]=CarryOut;
BinaryNumber AddResult = new BinaryNumber(Bin);
return AddResult;
}
public int HammingsDistance;
public int _ones;
}
Is my code style good?
Are there any errors?
Is there any better way to solve this problem with class inheritance ?
I would appreciate all comments, critics and feedbacks.
Hope you can understand my english :c-biggrin:
Thanks for help!
Adam


Sign In
Create Account

Back to top









