3 Replies - 2313 Views - Last Post: 16 February 2012 - 06:16 PM Rate Topic: -----

#1 Finch32  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 11
  • Joined: 09-November 11

Binary to decimal number format exception

Posted 16 February 2012 - 05:19 PM

I need to write a program that converts binary to decimal. I have figured that part of the code out. The problem that i m having is i need it to throw a number format exception if the string is not a binary string. All i can think of is to use a if else statement to get it to print the decimal value or not in binary format. But i don't know how to make it know that the user entered 1's and 0's. Any help will be appreciated thanks

public class exercise13_7 {
  public static void main(String[] args) {
    //user to enter a string
    java.util.Scanner input = new java.util.Scanner(System.in);
    System.out.print("Enter a binary number string: ");
    
    String s = input.nextLine();
    	
   //if string is a binary string then print this
    System.out.println("The decimal value is " + binaryToDecimal(s));
  
    //else string is not a binary string then
    //throw new NumberFormatException("Given string is not in binary format.");
  
  
  }

  public static int binaryToDecimal(String binaryString) {
    int value = binaryString.charAt(0) - '0';
    for (int i = 1; i < binaryString.length(); i++) {
      value = value * 2 + binaryString.charAt(i) - '0';
    }
	
    return value;
   
    }
   
 
}



Is This A Good Question/Topic? 0
  • +

Replies To: Binary to decimal number format exception

#2 guido-granobles  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 171
  • View blog
  • Posts: 617
  • Joined: 02-December 09

Re: Binary to decimal number format exception

Posted 16 February 2012 - 05:45 PM

You can check if the string have only 0 and 1 using java regex, for example:
 Pattern p = Pattern.compile("^[0-1]+$");
Matcher m = p.matcher("1110ee");

if(m.find()) {
   System.out.println("binary");
}else{
   System.out.println("not binary");
   throw new NumberFormatException("Given string is not in binary format.");
}


This post has been edited by guido-granobles: 16 February 2012 - 05:46 PM

Was This Post Helpful? 1
  • +
  • -

#3 Fuzzyness  Icon User is offline

  • Comp Sci Student
  • member icon

Reputation: 669
  • View blog
  • Posts: 2,438
  • Joined: 06-March 09

Re: Binary to decimal number format exception

Posted 16 February 2012 - 05:53 PM

For Binary, the number is 2 to the index power. So the very far right, where it will be 1 or 0, is 2^0 which is 1, if there is a 1 there then you add 1, then the next number would be 2^1 power which is 2, so if you have a 1 there add 2, then the next one is 2^2 power which is 4, so if you have a 1 there then add 4.

So, now that you know that, create a loop that starts at the string length -1, and goes until >=0, then decreases by 1. Have a binaryPosTracker to keep track of the index you should be at. Check and see if the char at the index is a 0 or a 1, if it is a 1 do the math, else move on.

Ex. -
String binary = "1010";
int decimal = 0;
int binaryPosTracker = 0;
for(int i = /*Set the conditionals as I stated above*/)
{
    if(/* the char at binary's i index == '1' */)
        decimal+= (int)(/*Cast to an int since method returns a double, also put this in parenthesis - Use Math.pow((double)base,(double)exponent) to get value */)
    /* increase binaryPosTracker no matter what so that the index stays correct*/
}
System.out.println("The binary value of: " + binary + " = " + decimal);



Here is the method you will need - Math.pow(double base, double exponent)

Make sense?
Was This Post Helpful? 1
  • +
  • -

#4 Finch32  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 11
  • Joined: 09-November 11

Re: Binary to decimal number format exception

Posted 16 February 2012 - 06:16 PM

Yes what you said makes sense but I have already did it with the java regex. thanks
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1