Java Program to Convert Binary to Octal

This article is created to cover a program in Java that converts a binary number entered by user at runt-time of the program, to its equivalent octal number.

Note - If you're not aware about, how the binary to octal conversion takes place, then refer to Binary to Octal Conversion. Now let's move on to the program.

Binary to Octal in Java using while Loop

The question is, write a Java program to convert binary number to octal number. The binary number must be received by user at run-time. Answer to this question, is the program given below:

import java.util.Scanner;

public class fresherearth
{
   public static void main(String[] args)
   {
      int binnum, octDigit=0, i=0, m=1, c=1, rem;
      int[] octnum = new int[20];
      
      Scanner scan = new Scanner(System.in);
      
      System.out.print("Enter the Binary Number: ");
      binnum = scan.nextInt();
      
      while(binnum!=0)
      {
         rem = binnum%10;
         octDigit = octDigit + (rem*m);
         if(c%3==0)
         {
            octnum[i] = octDigit;
            m = 1;
            c = 1;
            octDigit = 0;
            i++;
         }
         else
         {
            m = m*2;
            c++;
         }
         binnum = binnum/10;
      }
      
      if(c!=1)
         octnum[i] = octDigit;
      
      System.out.print("\nEquivalent Octal Value = ");
      for(i=1; i>=0; i--)
         System.out.print(octnum[i]);
   }
}

The sample run of above program with user input 111101 as binary number to convert and prints its equivalent octal value, is shown in the snapshot given below:

java convert binary to octal

Binary to Octal in Java using for Loop

Now let me create the same program using for loop, instead of while. To keep this program, as similar as possible, to previous program, then replace the following code:

while(binnum!=0)

with the code given below:

for( ; binnum!=0 ; )

That's it. But it's not a good practice. I recommend you to use for loop with all the three statements. Here is the program, with some other modifications too.

import java.util.Scanner;

public class fresherearth
{
   public static void main(String[] args)
   {
      int octDigit, i=0, m=1, c=1;
      int[] octnum = new int[20];
      
      Scanner scan = new Scanner(System.in);
      
      System.out.print("Enter the Binary Number: ");
      int binnum = scan.nextInt();
      
      for(octDigit=0; binnum!=0; binnum /= 10)
      {
         octDigit = octDigit + ((binnum%10)*m);
         if(c%3==0)
         {
            octnum[i] = octDigit;
            m = 1;
            c = 1;
            octDigit = 0;
            i++;
         }
         else
         {
            m *= 2;
            c++;
         }
      }
      
      if(c!=1)
         octnum[i] = octDigit;
      
      System.out.print("\nEquivalent Octal Value = ");
      for(i=1; i>=0; i--)
         System.out.print(octnum[i]);
   }
}

Same Program in Other Languages

Java Online Test


« Previous Program Next Program »