Conversão de binário para decimal

Olá pessoal, estou com dificuldade de fazer uma função que receba um vetor de 8 posições contendo a sequência binária 01011101 como parâmetro e retorne o número decimal
correspondente à esta sequência. O número decimal é calculado da seguinte maneira:
8
decimal = ∑ (veti×2 ^ (8−i) )
i=1

onde veti é o valor contido na posição i do vetor recebido.

O exercicício pede um programa que utiliza a função criada e o programa deve permitir que o usuário informe a sequência binária e mostre o valor decimal resultante.

Está dando erro e não sei como resolver… se alguém souber

import java.util.Scanner;
import java.util.Locale;
public class teste4
{

public static double decimais ( int r, double b, double d) {

double decimal = r;
return decimal;

}
public static void main(String[] args)

{

 Scanner ent = new Scanner (System.in).useLocale(Locale.ENGLISH);
 
 double b  = 01011101; 
 int r = 1;
 double [] vet;
 vet = new double [8];
 
 for (int i = 1; i < vet.length; i++)
 
 System.out.println ("Digite a sequência binária com 8 dígitos");
 double d = ent.nextDouble();
 
  r += (vet[i]*Math.pow(2,(7-i)));
 
 
 System.out.println ("");
  
      }
   }

Primeiro temos que entender melhor como será a entrada. Um vetor de 8 posições seria na verdade um array. Mas é um array de que? De int, byte, char?

O seu programa está lendo um double do Scanner (que não é um “vetor de 8 posições”), então claro que não vai dar certo.

Assumindo que você recebe um array contendo 8 dígitos, o programa seria algo como:

int[] digitos = new int[] { 0, 1, 0, 1, 1, 1, 0, 1 };
int decimal = 0;
for (int i = 0; i < digitos.length; i++) {
    decimal += digitos[i] * Math.pow(2, digitos.length - i - 1);
}
System.out.println(decimal);

Mas se a ideia é ler do Scanner, então o que faz mais sentido é ler uma string, pois se você digitar 01011101 e usar nextDouble, ele na verdade vai interpretar como o número “um milhão, onze mil, cento e um”. Então você lê como string e aí você converte os caracteres para dígitos:

Scanner scan = new Scanner(System.in);
String digitos = scan.nextLine();
int decimal = 0;
for (int i = 0; i < digitos.length(); i++) {
    int digito = digitos.charAt(i) - '0';
    decimal += digito * Math.pow(2, digitos.length() - i - 1);
}
System.out.println(decimal);

Vale lembrar que não estou validando a string (eu poderia incluir um if e dar erro se o caractere não for 0 nem 1 por exemplo). Outro ponto é que se o dígito for zero, fazer o cálculo é desnecessário, pois estarei somando zero, o que é redundante, então também poderia ter um if, algo como:

for(....) {
    if (digito != 0) // só soma se o dígito não for zero (pois se for, é desnecessário)
        decimal += etc
}