**Problem:** Write a Java program to convert octal into its corresponding decimal representation.

**Example:**

Input: 14 Output: 12 Input: 5 Output: 5

## Method 1: Using While Loop

To convert octal into a decimal, we multiply the digits of the octal with their respective exponential value of 8 (8^{position from the right â€“ 1}) and sum them up.

In Java, we use while loop to iterate through the digits as follows:

```
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int i=0, decimal=0, digit;
//Input an Octal Number
System.out.println("Enter a Octal Number");
int octal = in.nextInt();
while(octal>0){
//extract digit
digit = octal%10;
//multiply with exponential of 8 and add to the decimal
decimal += Math.pow(8,i++)* digit;
//remove digit from the octal number
octal = octal/10;
}
//output the octal number
System.out.println("Decimal: "+decimal);
}
}
```

**Output**:

`Enter a Octal Number 14 Decimal: 12`

## Method 2: Using Recursion

The approach used in this method is the same as the above program but is implemented in a recursive fashion.

In each recursive call, we extract the digit from the octal number, multiply it with its respective exponential value of 8 and return its sum with the next recursive callâ€™s result.

```
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//Input an Octal Number
System.out.println("Enter a Octal Number");
int octal = in.nextInt();
//call the recursive function and output the returned result
System.out.println("Decimal: "+octalToDec(octal,0));
}
//'i' represents the nth recursive call as well as the
//(n-1)th digit from left, so it can be used as an exponent
private static int octalToDec(int oct, int i){
//base condition
if(oct == 0)
return 0;
//extract digit
int digit = oct%10;
//multiply with exponential of 8 and add with next recusive call
return (int)Math.pow(8,i)*digit + octalToDec(oct/10, ++i);
}
}
```

**Output**:

`Enter a Octal Number 10 Decimal: 8`

It is important to note that in the recursive call statement, we pass the octal value by eliminating the digit which has been processed in the current recursive call.