Qual o metodo para avaliar um carcter individual de uma String? [RESOLVIDO]

o seguinte enunciado é do ultimo exercicio do meu curso.

Construa uma classe pública chamada TesteFinal1
Essa classe possui somente o método main que deve receber um String.
Da seqüência de caracteres recebidos, a aplicação deve considerar somente os caracteres 0 e 1.
Após receber a seqüência de caracteres, a aplicação deve avaliar individualmente essa seqüência da DIREITA para a ESQUERDA
(qual o metodo que devo usar para avaliar o caracter de um String de forma individual e começando da direita para a esquerda?)
para poder calcular o resultado final que deve acumular os valores segundo esses exemplos:

Entrada: 0
Processamento: (0*1)=0
Resultado a ser impresso: 0.0

Entrada: 1
Processamento: (1*1)=1
Resultado a ser impresso : 1.0

Entrada: 11
Processamento: (11) + (12)=3
Resultado a ser impresso: 3.0

e assim por diante.

eu fiz esse codigo:


import javax.swing.*;

public class Exercicio {

    public static void main(String[] args) {

        String numero;
        double resultado = 0;
        double valor = 0;

        numero = JOptionPane.showInputDialog("Digite um numero a ser calculado");
        char v[];
        v = numero.toCharArray();
        for (int i =  v.length; i >=0; i--) {
            valor = Double.parseDouble(v);
            if (valor == 0 || valor == 1) {
                valor += valor * (i + 1);

            }
            System.out.println(valor);


        }


    }
}

consigo receber o numero pelo teclado, mais não consigo fazer o resto que é pedido no enunciado.
se alguém puder me ajudar.

garotinhodejesus,

Acho que ngm vai te dar a reposta pronta se é isso que você está esperando.

Mas vou te dar uma dica, transforma sua String em um array de char e compara caracter a caracter.

use o método “banana”.toCharArray();

não se exqueça você começando da esquerda para a direita e não da direita para a esquerda como diz o enunciado

Seu FOR deveria ser ao contrário, ao invés de ser ++ deveria ser –

ok, não quero pronto quero dicas assim como vc me passou. Preciso aprender.
Bom eu alterei segundo as dicas do Bruno. mas esta dando erro de compilação na ora de receber o caracter pra converter para double. como posso resolver esse erro?

Da uma pesquisada no google como converter para double.

Nao faça desse jeito

use substring

String a;
a.substring(x,x+1)

Voce obtem um string da posição que voce quizer

Fica mais facil pra converter tendo o valor em string do que em char

Dependendo pode ser util o uso de Tokens

tabocu,

Não sei, você deve manjar mais que eu mas, aproveitando a deixa.

Você usar substring é um pouco mais custoso para o java.
Imagina se você tem uma String com por exemplo 500 caracteres. você vai ter que fazer um for de 500 iterações para pegar caracter por caracter e armezenar na string, tirando que tipo primitivos deveriam ser mais ageis do que atributo do tipo String por exemplo.

garotinhodejesus

Para converter um char em double, você pode usar a biblioteca beanutils da apache, nela existe uma classe de conversao, muito interessante podendo ser usada na maioria dos tipos, para utilizar você pode usar da seguinte maneira.

char c = '0';
		
System.out.println(ConvertUtils.convert(c, Double.class));

Abraços,

valeu pelas respostas, assim que eu chegar em casa vou ver se consigo acertar o código. é o último exercicio de um curso que estou fazendo online e amanha é o ultimo dia para entrega-lo. mais uma vez obrigado a todos.

usa o método charAt() da classe String e aplica no loop for .-.

int contChar = 1;
for (int i = numero.length() - 1; i >= 0; i--, contChar++){
   resultado += contChar * Integer.parseInt(numero.charAt(i));
}

não tenho certeza se Java lê eses código como C++, se não der certo, é só tirar o contChar++ da declaração do for e colocar ele dentro do bloco, logo abaixo da soma-atribuição da variável resultado
lembrando que é sempre bom usar o try-catch, o método parseInt arremessa a exception NumberFormatException se não vier um valor numérico pra ela

isso aí n.n

Mais uma vez obrigado a todos!!!

Qual foi a solução?


public class TesteFinal {

    public static void main(String[] args) {
        String entrada = JOptionPane.showInputDialog("Entre com uma String");
        int resultado=0;
        int contador = 0;
        int multi = 0;


        for (int i = entrada.length()-1; i >=0; i--) {
          if(entrada.charAt(i)=='0' || entrada.charAt(i)=='1'){
             if (entrada.charAt(i) == '1') {
                contador++;
                multi = 1;
            }
            if(entrada.charAt(i) == '0'){
                contador++;
                multi = 0;
            }
          }
        }
        System.out.println("Resultado: " + resultado);
    }
}

Qualquer vacilo vai dizendo que tentarei corrigir e aprender a me movimentar corretamente no Guj

[quote=garotinhodejesus] for (int i = entrada.length()-1; i >=0; i--) { if(entrada.charAt(i)=='0' || entrada.charAt(i)=='1'){ if (entrada.charAt(i) == '1') { contador++; multi = 1; } if(entrada.charAt(i) == '0'){ contador++; multi = 0; } } }
[/quote]

o teste lógico ai tá “errado” (testando coisas à toa)
você fez que: se o caractere for 0 ou 1, se o caractere é igual a 1, se o caractere é igual a 0

seria muito melhor: se o caractere for 1, senão se o caractere for igual a 0
algo como:

for(){ if(==1){ } else if (==0){ } }

assim temos só dois testes invés de três, e pode se tornar um só caso for 1 (se entra no if, pula o respectivo else)