Hello. I was making a program that converts decimal numbers to binary numbers.
And I made one method for each step. that is,
1. take the binary number and separate each digit, and then take each digit and add to an arraylist in the reverse order.(method name: Binary2ArrayList)
2.check each digit and if it is "1" add the a power of 2 equivalent to the column(Method name: Arraylist2Decimal)
Basically,
0.(input) 110
1. 1 1 0 -> 0 1 1
2. [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768]
0 1 1
(ignore, add,add)
3. 2+4 = 6
result = 6
I know this is not the most optimal way to do it, but I'm doing it this way so i can practice more coding with a single project.
but what happened, is that my program completely ignores the "Arraylist2Decimal" method even after called.
I will be really grateful if someone could help me.
(Using netbeans IDE)
Code:
package javaapplication1;
import java.util.Scanner;
import java.util.ArrayList;
public class Binary2Decimal2Binary {
private static long binary1;
private static long binary2;
private final static ArrayList POWERSOF2 = new ArrayList<Integer>();
private final static ArrayList<Integer> SEPARATED2 = new ArrayList<Integer>();
private static int result1 = 0;
private static int result2 = 0;
private final static ArrayList<Integer> SEPARATED1 = new ArrayList<Integer>();
static public int getNthDigit(int number, int n) {
return (int) ((number / Math.pow(10, n - 1)) % 10);
}
static void binary2ArrayList(long binary1, long binary2){
String separating1 = String.valueOf(binary1);
for(int i = 1; i < separating1.length() + 1; i++) {
int j =(int) getNthDigit((int)binary1, i);
SEPARATED1.add(j);}
String separating2 = String.valueOf(binary2);
for(int x = 1; x < separating2.length() + 1; x++) {
int y =(int) getNthDigit((int)binary2,x);
SEPARATED2.add(y);
}
System.out.println("Debugger 1 :" + SEPARATED1);
System.out.println("Debugger2 :" + SEPARATED2);
}
static void Arraylist2Decimal(){
for(int i = 1; i == SEPARATED1.size() + 1; i++) {
int intValue = (int)SEPARATED1.get(i);
int addition = (int) POWERSOF2.get(i);
if(intValue == 1){
result1 += addition;
}
System.out.println("Debugger 3:" + result1);
}
for(int k = 1; k == SEPARATED2.size() + 1; k++) {
int intValue = (int) SEPARATED2.get(k);
int addition = (int) POWERSOF2.get(k);
if(intValue == 1){
result2 += addition;
}
System.out.println("Debugger 4 :" + result2);
}};
public static void main(String[] args) {
POWERSOF2.add(1);
POWERSOF2.add(2);
POWERSOF2.add(4);
POWERSOF2.add(8);
POWERSOF2.add(16);
POWERSOF2.add(32);
POWERSOF2.add(64);
POWERSOF2.add(128);
POWERSOF2.add(256);
POWERSOF2.add(512);
POWERSOF2.add(1024);
POWERSOF2.add(2048);
POWERSOF2.add(4096);
POWERSOF2.add(8192);
POWERSOF2.add(16384);
POWERSOF2.add(32768);
System.out.println("Powers of 2:" + POWERSOF2);
Scanner scan = new Scanner(System.in);
System.out.println("Input first binary number.");
binary1 = scan.nextLong();
System.out.println("Input second binary number.");
binary2 = scan.nextLong();
scan.close();
binary2ArrayList(binary1,binary2);
Arraylist2Decimal();
System.out.println("First Number Converted:" + result1);
System.out.println("Second Number Converted:" + result2);
}}
input : 110
101
output :
Debugger 1 :[0, 1, 1]
Debugger2 :[1, 0, 1]
First Number Converted:0
Second Number Converted:0
(Note that "Debugger 3"println and "Debugger 4"println is not working.)