Hola me gustaría poder hacer esta operacion con vectores:
Sumar([1,2,3][4,5,6]) => Bien esta me sale perfecta
Pero si en vez de dos vectores, le pongo un vector y otra suma, es decir:
Sumar([1,2,3],sumar([4,5,6][7,8,9))
Ya esto no me sale, me debería salir para todas las operaciones que yo pongo dentro del sumar.
Aqui pongo mi clase Instruccion para que me ayudeis
public class Instruccion {
public Instruccion(String cadena) {
// TODO Auto-generated constructor stub
String vectores = "";
String operacion = "";
String operacion2 = "";
String otraOperacion = "";
String resultado ="";
int contador = 0;
do{
operacion = operacion + cadena.charAt(contador);
contador ++;
} while (cadena.charAt(contador)!='(');
int nivel = 1;
int corchete=0;
// Tengo que comprobar si tiene un corchete o varios para meterme en el producto escalar y en el logaritmo
// tambien tendre que comprobar para cargar y salvar
String operando1 = "";
String operando2 = "";
List vector = new ArrayList();
for (int i = operacion.length()+1;i<cadena.length();i++){
String cadenaComprobar = "";
while (nivel!=0){
//toma el primer operando hasta la ,
if ((cadena.charAt(i)=='[') || (cadena.charAt(i)==']')){
operando1=operando1;
} else {
operando1=operando1+cadena.charAt(i);
}
if (cadena.charAt(i)=='('){
nivel++;
}else if(cadena.charAt(i+1)==')'){
nivel--;
}
if (cadena.charAt(i+1)==']'){
nivel=0;
}
i++;
}
nivel=1;
i=i+2;
char letra;
if (i<cadena.length()){
letra = cadena.charAt(i);
}
else {
letra = ')';
}
while (nivel!=0){
//toma el segundo operando hasta el final )
if ((isNumeric(letra)) || (letra==',')||(letra=='[')){
if ((cadena.charAt(i)=='[') || (cadena.charAt(i)==']')){
operando2=operando2;
} else {
operando2=operando2+cadena.charAt(i);
}
if (cadena.charAt(i)=='('){
nivel++;
}else if(cadena.charAt(i+1)==')'){
nivel--;
}
if (cadena.charAt(i+1)==']'){
nivel=0;
}
i++;
letra = cadena.charAt(i);
} else {
if (letra != ')'){
int indice = i;
while (indice<cadena.length()-1){
otraOperacion=otraOperacion + cadena.charAt(indice);
indice ++;
}
if(cadena.charAt(indice)==')'){
nivel --;
}
if (!otraOperacion.equals("")){
Instruccion instruccion = new Instruccion(otraOperacion);
// LLEVAR LA CUENTA DE LAS INSTRUCCIONES
}
// coger las letras y llamar a queFuncionEs
// me creo queFuncionEs para luego llamar a dicha funcion
}else{
nivel--;
}
}
}
}
operacion = operacion.toLowerCase();
if (operacion.equals("sumar")){
Suma sumar = new Suma();
//if (operando1.length()==operando2.length()){
resultado = sumar.operacion(operando1, operando2);
//}else if (operando1.length()<operando2.length()){
// resultado = sumar.operacion(operando1, resultado);
// }else if (operando1.length()>operando2.length()){
// resultado = sumar.operacion(resultado, operando2);
// }
if (resultado.equals("[False]")){
System.err.println("Error en el número de argumentos de alguno de los vectores");
} else {
System.out.println("El valor de la suma de los dos vectores es: " +resultado);
}
}
if (operacion.equals("restar")){
Resta restar = new Resta();
resultado = restar.operacion(operando1, operando2);
if (resultado.equals("[False]")){
System.err.println("Error en el número de argumentos de alguno de los vectores");
} else {
System.out.println("El valor de la resta de los dos vectores es: " +resultado);
}
}
if (operacion.equals("multiplicar")){
Multiplicacion multiplicar = new Multiplicacion();
resultado = multiplicar.operacion(operando1, operando2);
if (resultado.equals("[False]")){
System.err.println("Error en el número de argumentos de alguno de los vectores");
} else {
System.out.println("El valor de la multiplicación de los dos vectores es: " +resultado);
}
}
if (operacion.equals("producto escalar")){
ProductoEscalar producto = new ProductoEscalar();
resultado = producto.operacion(operando1);
if (resultado.equals("[False]")){
System.err.println("Error en el número de argumentos de alguno de los vectores");
} else {
System.out.println("El valor del producto escalar del vector es: " +resultado);
}
}
if (operacion.equals("logaritmo")){
Logaritmo logaritmo = new Logaritmo();
resultado = logaritmo.operacion(operando1);
if (resultado.equals("[False]")){
System.err.println("Error en el número de argumentos de alguno de los vectores");
} else {
System.out.println("El valor del logarítmo de del vector es: " +resultado);
}
}
if (operacion.equals("grabar")){
String ruta =operando1;
Grabar grabar = new Grabar();
grabar.grabacion(ruta);
}
if (operacion.equals("cargar")){
String ruta =operando1;
Cargar cargar = new Cargar();
cargar.cargando(ruta);
}
System.out.println(operacion);
}
private static boolean isNumeric(char letra){
if ((letra=='1')||(letra=='2')||(letra=='3')||(letra= ='4')||(letra=='5')||
(letra=='6')||(letra=='7')||(letra=='8')||(letra== '9')||(letra=='0')){
return true;
}else{
return false;
}
}
}
Me lo hace todo correcto, hasta que llamo a restar o sumar con un vector y dentro otra suma u otra resta. Se que tengo mas fallos en mi código, pero ésta es mi prioridad, por mil vueltas que le he dado y mil cosas que he intentado no me sale por mi mismo.
Un saludo y muchas gracias por adelantado!!!