Autor
|
Tema: Encontrar un String en un Vector de String [JAVA] (Leído 2,665 veces)
|
Tonyskater
Desconectado
Mensajes: 16
El camino al éxito es la actitud.
|
Hola compañeros, tengo una duda espero que entre todos podamos resolverla. Dice así: tengo un vector de estaciones: linia[0] = "La Sagrera"; linia[1] = "Onze de Setembre"; linia[2] = "Bon Pastor"; linia[3] = "Llefiá"; linia[4] = "La Salut"; linia[5] = "Gorg";
Se introduce por teclado el nombre de una estación y tengo que averiguar la sucursal que queda más cerca de la estación que he introducido. Las sucursales están colocadas en los extremos del vector: linia[0] y linia.length-1String sucursal0 = estacion (linia, "La Salut"); System. out. println("La sucursal mas cercana es: "+sucursal0 ); String sucursal1 = estacion (linia, "Onze de Setembre"); System. out. println("La sucursal mas cercana es: "+sucursal1 ); String sucursal2 = estacion (linia, "Bon Pastor"); System. out. println("La sucursal mas cercana es: "+sucursal2 ); String sucursal3 = estacion (linia, "Llefiá"); System. out. println("La sucursal mas cercana es: "+sucursal3 ); String sucursal4 = estacion (linia, "La Sagrera"); System. out. println("La sucursal mas cercana es: "+sucursal4 ); String sucursal5 = estacion (linia, "Gorg"); System. out. println("La sucursal mas cercana es: "+sucursal5 );
Tanto si el valor introducido no es válido (no se reconoce dentro del vector), o el valor introducido es una de las Sucursales. Se devolverá una cadena vacía. Si el valor es válido y no es una de las sucursales, se devolverá el nombre de la sucursal más cercana (Aquí esta la parte que no entiendo, ya que me cuesta mucho tratar con vectores de String al no saber comparar bien los elementos entre ellos...) Cómo podria solucionar el tema de comparar los Strings, la verdad estoy muy verde con ese tema, esta es mi funcion(sin terminar): for(int i=0;i<linia.length/2;i++){ if(estacion.equals(linia[i+1])||estacion.equals(linia[i+2])){//esta parte del codigo es muy chapucera, ya que si tuviera un vector mas grande no funcionaria bien con esto... sucursal="La Sagrera"; }else if(estacion.equals(linia.length-1)){ sucursal="Gorg"; }else if(estacion.equals(linia[0])){ sucursal="La Sagrera"; }else if(){//aqui viene el condicional que necesito sucursal=""; } } return sucursal; }
Gracias por vuestra ayuda!
|
|
« Última modificación: 2 Mayo 2017, 18:51 pm por Tonyskater »
|
En línea
|
"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo" Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.
|
|
|
Tonyskater
Desconectado
Mensajes: 16
El camino al éxito es la actitud.
|
Con este codigo funciona, pero no es lo que busco, me gustaria hacerlo con un bucle para cualquier tipo de longitud del vector. Este solo funcionaria para este caso. if(estacion.equals(linia[0])||estacion.equals(linia[1])||estacion.equals(linia[2])){ sucursal="La Sagrera"; }else if(estacion.equals(linia[3])||estacion.equals(linia[4])||estacion.equals(linia[5])){ sucursal="Gorg"; }else{ sucursal=""; } return sucursal; }
|
|
|
En línea
|
"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo" Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.
|
|
|
Tonyskater
Desconectado
Mensajes: 16
El camino al éxito es la actitud.
|
Con este codigo funciona, pero no es lo que busco, me gustaria hacerlo con un bucle para cualquier tipo de longitud del vector. Este solo funcionaria para este caso. if(estacion.equals(linia[0])||estacion.equals(linia[1])||estacion.equals(linia[2])){ sucursal="La Sagrera"; }else if(estacion.equals(linia[3])||estacion.equals(linia[4])||estacion.equals(linia[5])){ sucursal="Gorg"; }else{ sucursal=""; } return sucursal; }
Hola lo he entregado así al final, pero me gustaría saber como hacerlo de la otra manera.¿Es muy complicado? He estado mirando por el foro pero no he encontrado gran cosa.
|
|
|
En línea
|
"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo" Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.
|
|
|
3n31ch
Desconectado
Mensajes: 445
Grandes conocimientos engendran grandes dudas
|
Hola amigo, lo lamento mucho. No vi tu post hasta ahora. Veras, tienes un problema logico grandote ahi. A ti no te interesa saber el nombre de las estaciones que estan en medio. Te interesa saber su indice. Imaginemos que tienes 6 estaciones: 0 A (SUCURSAL) 1 B 2 C 3 D 4 E 5 F (SUCURSAL) Los valores "posibles" son 1, 2, 3, 4. Entonces lo que tienes que ver es si el numero ingresado esta mas cerca del 0 o del 5. Si te ingresan un 3, sabes que para llegar al 0 hay 3 numeros (que cohincidente mente es igual al numero ingresado... y de hecho si ves con el 2 o con el 1... pasara lo mismo), y para llegar al 5 solo son 2 (que cohincidente mente es el resultado de 5-3). Luego con un simple if discriminas cual es menor y cual es mayor. Entonces repasando: Largo_del_arreglo: 6; Primera_estacion: 0; Ultima_estacion: Largo_del_arreglo - 1
Valor_ingresado: 3 Cercania_Primera_estacion: Valor_ingresado; Cercania_Ultima_estacion: Uiltima_estacion - Valor_ingresado;
SI Cercania_Primera_Estacion < Cercania_Ultima_Estacion: IMPRIMIR(Nombre_Primera_Estacion); O SI NO SE CUMPLIO LA ANTERIOR Y Cercania_Ultima_Estacion < Cercania_Primera_Estacion IMPRIMIR(Nombre_Ultima_Estacion); SI NO SE CUMPLIO NINGUNA DE LAS ANTERIORES IMPRIMIR("DA IGUAL, ESTAN IGUAL DE LEJOS, TE JODES");
|
|
|
En línea
|
|
|
|
Tonyskater
Desconectado
Mensajes: 16
El camino al éxito es la actitud.
|
Hola amigo, lo lamento mucho. No vi tu post hasta ahora. Veras, tienes un problema logico grandote ahi. A ti no te interesa saber el nombre de las estaciones que estan en medio. Te interesa saber su indice. Imaginemos que tienes 6 estaciones: 0 A (SUCURSAL) 1 B 2 C 3 D 4 E 5 F (SUCURSAL) Los valores "posibles" son 1, 2, 3, 4. Entonces lo que tienes que ver es si el numero ingresado esta mas cerca del 0 o del 5. Si te ingresan un 3, sabes que para llegar al 0 hay 3 numeros (que cohincidente mente es igual al numero ingresado... y de hecho si ves con el 2 o con el 1... pasara lo mismo), y para llegar al 5 solo son 2 (que cohincidente mente es el resultado de 5-3). Luego con un simple if discriminas cual es menor y cual es mayor. Entonces repasando: Largo_del_arreglo: 6; Primera_estacion: 0; Ultima_estacion: Largo_del_arreglo - 1
Valor_ingresado: 3 Cercania_Primera_estacion: Valor_ingresado; Cercania_Ultima_estacion: Uiltima_estacion - Valor_ingresado;
SI Cercania_Primera_Estacion < Cercania_Ultima_Estacion: IMPRIMIR(Nombre_Primera_Estacion); O SI NO SE CUMPLIO LA ANTERIOR Y Cercania_Ultima_Estacion < Cercania_Primera_Estacion IMPRIMIR(Nombre_Ultima_Estacion); SI NO SE CUMPLIO NINGUNA DE LAS ANTERIORES IMPRIMIR("DA IGUAL, ESTAN IGUAL DE LEJOS, TE JODES");
Hola! Gracias por responder! No importa lo que tardes es simplemente que quiero aprender y mejorar lo que ya sé. Entonces con esto entiendo que, para conocer que recorrido es menor tengo que operar con los valores que ya tengo; 0 y 5(sucursales), 1,2,3 y 4(Estaciones): Si tengo que llegar a la estación 4 desde una de mis sucursales...
0+valor=Distancia desde 0; 5-valor=Distancia desde 5; Si distancia desde 0<distancia desde 5{Devolvemos sucursal 0;} sino si distancia desde 0>distancia desde 5{Devolvemos sucursal 5;} si no se cumplen ninguna de las 2{Devolveríamos la cadena vacía;}
0+4=4; 5-4=1; if(4<1){ //devuelve false por lo que no entra en esta condicion sout("Estacion 0"); }else if(4>1){ sout("Estacion 5"); // devuelve true por lo q imprime estacion 5 }else{ sout(""); // como ah entrado en la condicion anterior ha salido del condicional. }
Vale, pues muchas gracias! Hay alguna manera de valorar la contribución de cada usuario en el foro? En plan darte una puntuación o algo así.
|
|
« Última modificación: 3 Mayo 2017, 12:40 pm por Tonyskater »
|
En línea
|
"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo" Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.
|
|
|
3n31ch
Desconectado
Mensajes: 445
Grandes conocimientos engendran grandes dudas
|
No creo que nadie de este foro conteste dudas por puntos. Con que aprendas y posteriormente tu contestes dudas nos damos por pagados
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como puedo hacer q mi JTextArea me imprima mas de un dato string datos string
Dudas Generales
|
alda19
|
1
|
5,684
|
15 Junio 2011, 03:18 am
por Novlucker
|
|
|
STL: Combinando uso de map, string y vector
Programación C/C++
|
david_BS
|
0
|
1,877
|
8 Mayo 2012, 02:26 am
por david_BS
|
|
|
DLL con STL (vector,string,stringstream) exportar
Programación C/C++
|
patilanz
|
3
|
2,533
|
22 Agosto 2015, 22:26 pm
por BlackZeroX
|
|
|
Duda pasar de vector<BYTE> a string en C++
Programación C/C++
|
Kaxperday
|
4
|
3,314
|
12 Junio 2016, 10:16 am
por Kaxperday
|
|
|
Problema al copiar string a un arreglo string dinamico VS2013 ultimate
Programación C/C++
|
raver1983
|
1
|
2,687
|
7 Febrero 2017, 01:11 am
por raver1983
|
|