Eu estou tentando construir um decifrador que transformara o binário em um número, elevando o número pela sua posição, mas ao usar o método charAt eu não consigo usar uma variável int para ler um digito especifico.
Para quiser ver o codigo, ou querer deixar uma dica:
import java.util.Scanner;
public class DecodificadorDeBinarios {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
boolean comeco = false;
do {
System.out.println("Descodificador de números em binário");
System.out.print("Texto para codificar: ");
String texto = teclado.nextLine();
int quantidadeDigitos = texto.length();
while (quantidadeDigitos > 0) {
char digito = texto.charAt(quantidadeDigitos);
System.out.println(digito);
}
} while (comeco);
}
Suponha que a string tem 10 caracteres. Então o tamanho dela (o length()) é 10.
Só que os índices começam do zero: o primeiro caractere está na posição zero, o segundo na posição 1, o terceiro na posição 2, e assim por diante. Então o décimo caractere está na posição 9.
Por isso, de forma geral, os índices vão de zero até o tamanho da string menos 1 (length() - 1).
Quando você declara um vetor de qualquer quantidade, o primeiro elemento do vetor sempre vai ser a posição 0, não 1. Então se você quiser, por exemplo, acessar a primeira posição, você vai ter que falar 0 ao invés de 1. Se em um vetor de 9 posições você quiser acessar a nona posição, você não vai falar que quer acessar a posição 9, mas sim a 8.
Por isso que se diz que “os índices vão de 0 até length() - 1”. Porque, em um vetor de tamanho X, os índices não vão de 1 até X, mas sim de 0 até X-1.