Dois CHAR em INT?[RESOLVIDO]

12 respostas
F

Olá amigos, estou com um problema num trabalho da faculdade e ficaria muito grato se alguém pudesse me ajudar. Num certo momento do trabalho precisei ler uma string com o formato de um polinômio assim:
15x3-4x2+10x1+7x0

Sendo q o numero depois do x representa o expoente. Li o polinomio e armazenei num vetor de char

polinomio = scan.nextLine();
		System.out.println("polinomio "+polinomio);
		System.out.println();
		char b[] = polinomio.toCharArray();

E depois separei os números dos demais termos em outros vetores de char, um para cada tipo de elemento

char numero[]; char variavel[]; char sinal[];

Quando fui armazenar os elementos no vetor numero[] não pude coloca-los de qualquer forma,pois os numeros se misturariam e eu não iria saber quantas casa decimais teriam cada um.
ex: 15x3-4x2+10x1+7x0
No vetor ficaria assim, sem separação: [telefone removido]

[1][5][3][4][2][1][0][1][7][0]

Então resolvi colocar uma vírgula ‘,’ sempre que a proxima posição fosse um ‘x’ ou um sinal ‘+’ ou ‘-’, então o vetor numero, de acordo com exemplo acima, ficou assim:
15,3,4,2,10,1,7,0

[1][5][,][3][,][4][,][2][,][1][0][,][1][,][7][,][0]

Agora vem o problema, tenho q transformar cada um desses char em int, o que é bastante facil se fosse somente um numero. Minha dificuldades são:
(1)saber quando os numeros vão ter um duas ou mais casas decimais
(2)transformar em int elementos char q tem duas casas decimais, como faço isso? Concatenar?

Espero q alguem me ajude com esse problema.
Desde já, agradeço.

12 Respostas

CrOnNoS
Esse código não resolveria seu problema ?
public static void main(String[] args) {

		String valores = "15x3-4x2+10x1+7x0";
		valores = valores.replaceAll("x", " ");
		System.out.println(valores);
		valores = valores.replaceAll("-", " ");
		System.out.println(valores);
		valores = valores.replaceAll("\+", " ");
		System.out.println(valores);
		String cortados[] = valores.split(" ");

		for (int i = 0; i < cortados.length; i++) {
			System.out.println(cortados[i]);
		} // for

	} // main

Se não posso tentar ajudar considerando seu vetor mesmo.
edit: tenta executar ele que você vera que o vetor "cortados" ao final contém cada valor numérico em uma casa (independente de ser unidade, dezena etc)

F

Valeu CrOnNoS não era q eu tava imaginando mas pelo q vi vai dar pra fazer desse jeito, so tem um problema agora como transformar essas Strings em int.
Valeu

CrOnNoS
Para transformar String, basta usar o método parseInt() da classe Integer:
String numero = "1";
		int um = Integer.parseInt(numero);

		char outroNumero = '6';
		int seis = Integer.parseInt(String.valueOf(outroNumero));
F

Valeu CrOnNoS agora vou conseguir terminar meu trabalho
Abração!!
Muito Obrigado.

F

Estava tentando continuar meu programa so que me veio uma duvida meus numeros tambem q ser negativos, ai retirei a parte do codigo que dizia:

valores = valores.replaceAll("-", " ");

Pensei q assim o sinal negativo ficaria e eu teria meu numero negativo, mas não foi isso q aconteceu o programa acabou armazenando

3-4 em uma posição do vetor. Como conseguir colocar um numero negativo e como funciona esse repleaceAll(“x”, " ") .
Valeu

Polimorphism

valores = valores.replaceAll("-", " -");

Tente isso. O metodo replaceAll vai pegar todos os “-” e transformar em " -", que vai separar mas continuar mantendo o sinal negativo.
Boa sorte

Metodo replaceAll - Inglês

F

Valeu Polimorphism,
mas continua armazenando na mesma posição a String “3-4” no vetor.
Como faço pra arrumar isso.

CrOnNoS

O replaceAll subistitui todas as strings que você enviou no primeiro parâmetro pela enviada no segundo.
Ou seja, todos os “x” na sua string são subistituidos por " " (espaço).
Então quando você remove o replace do “-” sua string vai ficar 15 3-4 2 10 1 7 0, e quando o método valores.split(" "); (que retorna um vetor de strings correspondente a separar cada valor entre “espaços” em uma string do vetor) for chamado, ele não vai separar o 3 do -4.
Tenta fazer como o polimorph disse e vai manter o sinal.
Mas você não tinha salvo os sinais em outro vetor ?

EDIT: Continua ? Você trocou o “valores = valores.replaceAll(”-", " “);” pelo replace do polimorph ?

F
Resolvi parar de armazenar os sinais em outo vetor para tornar o programa mais objetivo e rapido.

Subistitui

valores = valores.replaceAll("-", " “);

por

valores = valores.replaceAll(”-", -);

mas continua armazenando na mesma posição o 3-2

5x3-2x7+19x1+4x0
posição[0] = 5
posição[1] = 3-2
posição[2] = 7
posição[3] =19
posição[4] = 1
posição[5] = 4
posição[6] = 0

CrOnNoS

é valores = valores.replaceAll("-", " -"); <-- repare que tem um espaço no segundo
Lembre-se que o split está separando os valores pelos " " (espaços)

Polimorphism

Polimorphism:
valores = valores.replaceAll("-", " -");

Tente isso. O metodo replaceAll vai pegar todos os “-” e transformar em " -", que vai separar mas continuar mantendo o sinal negativo.
Boa sorte

Metodo replaceAll - Inglês

O método separa pelos espaços…

Eu dei a idéia de : valores = valores.replaceAll("-", " -");
Você colocou: valores = valores.replaceAll("-", “-”); // Tirou o espaço que faria slip separar =D

[]`s

F

No valeu não tinha visto o espaço em branco.
Acho q ta na hora de começar a usar oculos
Huashuasuhahs
Valeu galera.

Criado 23 de agosto de 2009
Ultima resposta 23 de ago. de 2009
Respostas 12
Participantes 3