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.
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?
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));
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
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