Java - Ayuda con expresiones regulares (JAVA)

 
Vista:

Ayuda con expresiones regulares (JAVA)

Publicado por bryan (2 intervenciones) el 27/02/2014 12:19:24
Hola, quería saber si me podeis ayudar con un ejercicio que tengo, en el que me piden calcular el peso molecular.
El parámetro que me pasan al método representa la fórmula molecular de un compuesto químico, y el método tiene que devolver el peso molecular de dicho compuesto.
Algo así: ("CO2", 44.0095);
("C6H12",84.158999);

Ejemplo
Fórmula Descripción Peso molecular
"NaCl" 1 átomo de Na (p.a. 22.9898) + 1 átomo de Cl (p.a. 35.453) 58,4428
"H2O" 2 átomos de H (p.a. 1.0079) + 1 átomo de O (p.a. 15.999) 18,0148



public class StringUtils {
public static double molWeigth (String s1) {
double result = 0.0;
int n = Integer.parseInt(s1);
Pattern patron = Pattern.compile("\\[A-Z][a-z]*\d*[A-Z][a-z]*\d*");
Matcher m = patron.matcher(s1);
while (m.find()) {
result += n*..........;
}
return result;
}
}


Esto es lo que tengo, se que no es mucho, mi problema es que creo que la expresión regular no representa la formula molecular. Y no sabría que poner a continuación de "result += n*......" ¿una llamada al metodo que tiene los pesos atomicos de todos los elementos?

Ahh, y para calcular los (p.a) de los elementos, tengo un método que me devuelve el peso atómico de (tipo double) un elemento que se le pasa como parámetro en forma de objeto String.

GRACIAS DE ANTEMANO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con expresiones regulares (JAVA)

Publicado por Tom (1831 intervenciones) el 27/02/2014 17:18:43
Si tienes suerte con el formato de entrada (la fórmula) una expresión del tipo:

"([A-Z][a-z]*)([0-9]*)" te iría dando en m.group(1) el elemento químico y en m.group(2) el número de átomos (o null).

Por supuesto, en algún sitio has de tener una lista de cada elemento y su masa atómica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con expresiones regulares (JAVA)

Publicado por bryan (2 intervenciones) el 27/02/2014 19:50:26
es que lo único que me tiene que devolver es el peso molecular
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar