I'm trying to learn Java, so I'm doing a few exercises from a programmer project idea book. This exercise requires that the program be able to convert a decimal number to binary and vice versa, like so:
Please enter the binary/decimal number to convert:9783569 100101010100100100010001 Please enter the binary/decimal number to convert:100101010100100100010001 9783569
Here's the code I came up with:
import java.util.Scanner;
public class BinaryToDecimalAndBackConverter{
static String convertDecimalToBinary(String decimal){
int integer = Integer.valueOf(decimal);
String result = new String();
while(integer > 0){
result+=String.valueOf(integer%2);
integer/=2;
}
result = new StringBuffer(result).reverse().toString();
return result;
}
static int convertBinaryToDecimal(String binary){
int result = 0;
for(int reverseCounter = 0; reverseCounter < binary.length(); reverseCounter++){
char currentChar = binary.charAt(binary.length() - reverseCounter - 1);
int numericValue = Character.getNumericValue(currentChar);
result+=Math.pow(2, reverseCounter) * numericValue;
// System.out.println(Math.pow(2, reverseCounter) * Character.getNumericValue(binary.charAt(binary.length() - reverseCounter - 1)) + " reverseCounter " + reverseCounter);
}
return result;
}
static String isDecimalOrBinary(String input){
for(int counter = 0; counter < input.length(); counter++){
if(input.charAt(counter) != '0' && input.charAt(counter) != '1'){
return "decimal";
}
}
return "binary";
}
public static void main(String[] args){
Scanner inputScanner = new Scanner(System.in);
System.out.print("Please enter the binary/decimal number to convert:");
String input = inputScanner.nextLine();
switch(isDecimalOrBinary(input)){
case "decimal":
System.out.println(convertDecimalToBinary(input));
break;
case "binary":
System.out.println(convertBinaryToDecimal(input));
break;
}
}
}