Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Java Program Help

  1. Nov 16, 2004 #1
    Hello all:

    I need to write a program that takes an array of 0's and 1's and converts them into base 10 numbers. Here is my code, but I cant get it to return the correct base 10 number.

    Code (Text):
     /*  This program returns a value in base 10 from an array of binary numbers.
     *
     */


    public class binary
    {
        public int convertBaseTen( int [] a) // method takes an array
    {
        int numValue=1;
        int sum=0;
        for(int i = 0; i< a.length; i++)   // loop through array a
        {
        if (a[i]==1)
         {
            sum+=numValue;
         }
            numValue*=2;
        }  
           return numValue;
    }
        }
    Any help is appreciated.

    Thanks!
     
  2. jcsd
  3. Nov 16, 2004 #2

    mrjeffy321

    User Avatar
    Science Advisor

    dont just multiply the number in the array by 2, multiply it by 2^i
    i being the integer varibale you are using in the loop to go through the array, because with eah successive element in the array, you are increasing by a power of 2.

    for example if you have a number of lets say...5
    5 = 101 in binary

    101 = (1*2^0) + (0*2^4) + (1*2^2) = 5

    if you loop through the array from lowest power of 2 to highest power of 2, and multiply the element by 2^i, and then keep a running total of all that, then you should get the correct answer.
     
  4. Nov 17, 2004 #3
    Shouldn't you return sum
     
  5. Nov 17, 2004 #4
    Code (Text):
      /*  This program returns a value in base 10 from an array of binary numbers.
     *
     */


    public class binary
    {
        public int convertBaseTen( int [] a) // method takes an array
    {
        int numValue=1;
        int sum=0;
        for(int i = 0; i< a.length; i++)   // loop through array a
        {
        if (a[i]==1)
         {
            sum+=numValue;
         }
            numValue*=2;
        }  
           return numValue;
    }
        }  
    How would I write this program which takes in a boolean where true = 1, and false = 0?

    Example:

    {true, true, false, true} = [1,1,0,1] and then convert this into base 10? Should I use math.pow?

    Thanks
     
  6. Nov 17, 2004 #5
    any ideas?
     
  7. Nov 21, 2004 #6
    1st, return sum, not numValue.

    Also, for a boolean array, your if statement would be if(a).

    Another thing, is {1,1,0,1} representing 1101 or 1011? (Binary). If it's the second option, changing the return value to sum should be all that needs fixing. If not, you should start at a.length - 1 and go down to (and including) 0 at the array. Then it will calculate the last value and go to the first. In {1,1,0,1} would start at the last 1.

    Hope that helped!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Java Program Help
  1. Java Program (Replies: 11)

  2. Java help (Replies: 7)

  3. Java Help (Replies: 7)

  4. Java help (Replies: 15)

  5. Help! Cant get Java! (Replies: 3)

Loading...