El programa pregunta por pantalla la expresión matemática y, haciendo uso de la funcionalidad de expresiones regulares de java, verifica que la expresión esté bien escrita, que el método solicitado esté en la clase java.Math y que el argumento entre paréntesis sea un número.
import java.lang.reflect.*; import static javax.swing.JOptionPane.*; public class TestReflect { public static void main(String[] args) { ejecutarMetodoMatematico(); } public static void ejecutarMetodoMatematico(){ String cadena; String[] elem; boolean valido=false; do { cadena = showInputDialog("Función matematica"); if(cadena==null) break; if(!cadena.matches("\\w \\s*\\(\\s*\\-?\\d (\\.\\d )?\\s*\\)\\s*")){ mostrarError("Cadena no permitida"); continue; } elem = cadena.split("\\(|\\)"); elem[0] = elem[0].trim(); elem[1] = elem[1].trim(); if(elem.length!=2) { mostrarError("Cadena no valida"); continue; } Class c = java.lang.Math.class; Method m; try { m = c.getMethod(elem[0], Double.TYPE); } catch(NoSuchMethodException x) { mostrarError("Metodo '" elem[0] "' no permitido"); continue; } if(!elem[1].matches("\\-?\\d (\\.\\d*)?")) { mostrarError("Numero '" elem[1] "' no es valido"); continue; } valido = true; double num = Double.parseDouble(elem[1]); try { Object respuesta = m.invoke(null, num); mostrarRespuesta(cadena " = " respuesta); } catch(IllegalAccessException x) { x.printStackTrace(); } catch(InvocationTargetException x) { x.printStackTrace(); } } while(!valido); } public static void mostrarError(String msg) { showMessageDialog(null, msg, "Error", ERROR_MESSAGE); } public static void mostrarRespuesta(String msg) { showMessageDialog(null, msg, "Solución", PLAIN_MESSAGE); } }
coach
ResponderBorrarair max 97
golden goose francy
yeezy shoes
calvin klein outlet
nike shoes
yeezy boost 350 v2
michael kors outlet
yeezy 500
nike air max 2017
xiaofang20191218