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
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


0