Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2012, 17:08
danihj
 
Fecha de Ingreso: febrero-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 0
Hola me gustaría poder hacer operacion con vectores en java!!

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