Java - String [] a char []

 
Vista:
sin imagen de perfil

String [] a char []

Publicado por xeta21 (36 intervenciones) el 02/11/2015 21:19:38
Tengo el siguiente código:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package lletresdeparaulesaldiposit;
 
import java.util.Arrays;
 
public class LletresdeParaulesAlDiposit {
    public static void main(String[] args) {
        LletresdeParaulesAlDiposit  prg = new LletresdeParaulesAlDiposit ();
        prg.proves();
    }
      private boolean lletresDeParaulesAlDiposit(String[] paraules, char[] diposit) {
              for (int x=0;x<paraules.length;x++)
              System.out.println(" Caracter " + x + " : " + paraules.toCharArray());
             char [] definitives1 = definitives.toCharArray();
 
 
            if ( paraules.equalsIgnoreCase(diposit));
 
          return true;
      }
    private void proves() {
        char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};
        String[] paraules = {"cas", "dit"};
        System.out.print("Son lletresAldiposit (si): ");
        System.out.println(lletresDeParaulesAlDiposit(paraules,  diposit ));
    }
 
 
}


en la parte de :

1
2
3
4
private boolean lletresDeParaulesAlDiposit(String[] paraules, char[] diposit) {
	for (int x=0;x<paraules.length;x++)
	System.out.println(" Caracter " + x + " : " + paraules.toCharArray());
	char [] definitives1 = definitives.toCharArray();

Necesito coger las palabras del String Paraules y transformarlas en un array de caracteres.

Luego verificar que si los caracteres del deposito coinciden de TRUE.

No sé como hacer la conversión..

Y luego me pierdo en el equals o el ==.

alguien puede darme ejemplos?

mil gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

String [] a char []

Publicado por Lawliet (303 intervenciones) el 02/11/2015 22:32:53
Hola...

Espero te sea de utilidad...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private boolean lletresDeParaulesAlDiposit(String[] paraules, char[] diposit) {
	boolean result = false;
	for (int i = 0; i < paraules.length; i++){
		char[] caracteres = paraules[i].toCharArray();
		for(int j = 0; j < caracteres.length; j++){
			for(int k = 0; k < diposit.length; k++){
				if (diposit[k] == caracteres[j]){
					System.out.println("SI: " + diposit[k] + " - " + caracteres[j]);
					result = true;
				} else {
					System.out.println("NO: " + diposit[k] + " - " + caracteres[j]);
					result = false;
				}
			}
		}
		System.out.println("-----");
		System.out.println();
	}
	return result;
}

Como puedes ver, lo único que modifique fue tu método que retorne el valor boleano, también notaras que hago una serie de impresiones en pantalla para que veas cuales coinciden y cuales no, si solamente quieres dejar las coincidencias entonces puedas borrar el else en la validación que hago. No estoy seguro si es lo que necesitas pero espero sea de utilidad.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

String [] a char []

Publicado por montse (36 intervenciones) el 02/11/2015 22:50:00
Me gusta tu ejemplo te pongo el código completo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package lletresdeparaulesaldiposit;
 
public class LletresdeParaulesAlDiposit {
    public static void main(String[] args) {
        LletresdeParaulesAlDiposit  prg = new LletresdeParaulesAlDiposit ();
        prg.proves();
    }
      private boolean lletresDeParaulesAlDiposit(String[] paraules, char[] diposit) {
 
     	boolean result = false;
	for (int i = 0; i < paraules.length; i++){
		char[] caracteres = paraules[i].toCharArray();
		for(int j = 0; j < caracteres.length; j++){
			for(int k = 0; k < diposit.length; k++){
				if (diposit[k] == caracteres[j]){
					System.out.println("SI: " + diposit[k] + " - " + caracteres[j]);
					result = true;
				} else {
					System.out.println("NO: " + diposit[k] + " - " + caracteres[j]);
					result = false;
				}
			}
		}
		System.out.println("-----");
		System.out.println();
	}
	return result;
 
      }
    private void proves() {
        char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};
        String[] paraules = {"cas", "dit"};
        System.out.print("Son lletresAldiposit (si): ");
        System.out.println(lletresDeParaulesAlDiposit(paraules,  diposit ));
    }
 
 
}

Pero el problema que tengo es que tanto cas como dit salen en el deposito de caracteres.. y me da falso cuando no debería ser así.

Es decir me comprueba si coincide 100% pero no necesito que confirme 100% todas las vocales.

Necesito que me busque caràcter por caràcter si está. y ponerme true.

Por poner ejemplos:

Caracteres : h, l ,a, o

palabra Hola

TRUE

caracteres : H, l,a,o , q,e,u

palabra : Hola que

TRUE

En cambio :

caracteres H, l,a,o, q,e,u

Hola quu

FALSE ( coindice la palabra Hola pero la quu no así que da error el programa )

No necesito que me compruebe los caracteres sino las palabras.

Sería hacerlo al revés? :S


PD: Por que es Cadena == caracteres ?? y no equals?



PD: Creo que lo que hay que hacer es que cuando encuentre coincidencia pase a la siguiente letra.. :S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

String [] a char []

Publicado por Lawliet (303 intervenciones) el 03/11/2015 00:10:41
Tratare de explicar lo mejor posible...

Tu tienes dos arreglos, uno de ellos contiene tus palabras y el otro contiene todos los caracteres...

1
2
String[] palabras = {"HOLA","ADIOS"};
char[] caracteres = {'A','E','I','O','U'};

Cuando nosotros hacemos una separación de los caracteres de una palabra a través del método toCharArray(), nosotros obtenemos un arreglo con todos los caracteres devueltos, por lo tanto, como lo estamos haciendo por cada palabra entonces nos devuelve un arreglo por cada palabra...

Captura

Esto significa que cada arreglo tenemos que compararlo con nuestro arreglo de caracteres y no solo eso, sino que tenemos que comparar cada carácter de un arreglo con los otros caracteres del otro arreglo...

Captura2

Al final, ese diagrama vendría siendo lo siguiente...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Palabra: "HOLA"
NO: H - A
NO: H - E
NO: H - I
NO: H - O
NO: H - U
NO: O - A
NO: O - E
NO: O - I
SI: O - O
NO: O - U
NO: L - A
NO: L - E
NO: L - I
NO: L - O
NO: L - U
SI: A - A
NO: A - E
NO: A - I
NO: A - O
NO: A - U
 
Palabra: "ADIOS"
SI: A - A
NO: A - E
NO: A - I
NO: A - O
NO: A - U
NO: D - A
NO: D - E
NO: D - I
NO: D - O
NO: D - U
NO: I - A
NO: I - E
SI: I - I
NO: I - O
NO: I - U
NO: O - A
NO: O - E
NO: O - I
SI: O - O
NO: O - U
NO: S - A
NO: S - E
NO: S - I
NO: S - O
NO: S - U

Esto es necesario porque nosotros estamos haciendo comparaciones de caracteres, eso significa que tenemos que comparar que nuestra letra H de la palabra HOLA, no se encuentre en ninguna posición de nuestro arreglo que contiene todos los caracteres a comparar, por lo tanto te digo con toda seguridad que el código que te eh proporcionado es de suma importancia para ti.

¿Como lo haría yo?... Lo yo haría sería guardar todas las letras como una nueva palabra, si nos vamos en el ejemplo anterior, tendríamos un arreglo con las siguientes palabras...

Captura3

Posteriormente, las palabras nuevas guardarlas en un nuevo arreglo, de tal forma que cuando iteremos este arreglo con nuevas palabras con nuestras palabras originales de tal forma que cuando sean iguales, mandemos un true...

1
2
String[] palabras = {"HOLA","ADIOS"};
String[] palabras = {"OA","AIO"};

Sin más que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!

P.D. Si gustas puedes agregarme al Skype para que no dependas del tema, puedes agregarme con mi correo sin compromiso alguno (Encontraras mi correo al lado de mi nombre).
P.D. Es == debido a que lo que nosotros estamos comparando son caracteres... equals() es un método que nos permite comparar si 2 objetos son iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

String [] a char []

Publicado por montse (36 intervenciones) el 03/11/2015 00:23:40
Lo siento por ser tan pesada pero me lo explicas y lo entiendo pero no se como aplicarlo.

Tendría quizás que crear un nuevo if?

Si es true entonces guardar la palabra?


Mi idea era que si encontraba la palabra pasará al siguiente caràcter si el caràcter estaba pasar al siguiente.

Entiendo lo que me dices pero no quiero solo coger vocales si no todos los caracteres.

Es decir si tengo los caracteres X, A

Y pongo la palabra XA me dara true..

Pero si pongo la palabra XAO me dará incorrecto ya que entre los caracteres no se encuentra la o.

Por eso mi duda es hay alguna forma de recorrer las palabras verificar que esten los caracteres en el deposito y seguir con la palabra hasta que haga la comprobación completa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

String [] a char []

Publicado por Lawliet (303 intervenciones) el 03/11/2015 00:49:52
Una pregunta... Los caracteres a comparar pueden estar repetidos; es decir, esto es valido...

1
char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};

Ya que si es así no le veo mucho sentido comparar una letra "a" que se repite 3 veces. O simplemente fueron agregando caracteres sin darse cuenta de eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

String [] a char []

Publicado por Montse (36 intervenciones) el 03/11/2015 08:19:17
Si los caracteres están repetidos.

Por eso digo que tiene que comprobar que la letra esta yy pasar a la siguiente nl seguir comprobando una vez ya la ha encontrado.

Por eso no se hacerlo :(

Luego en tu ejemplo sólo comoara vocales pero el programa tiene que compararme todos los caracteres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

String [] a char []

Publicado por Lawliet (303 intervenciones) el 03/11/2015 19:10:26
Hola...

Honestamente, no le veo nada de sentido que tengas en tu arreglo a comparar caracteres repetidos; es decir...

1
char[] diposit = {'a', 'c', 'i','a','v','a','d','s', 'o','t','i'};

Para mi eso no es lógico ya que para que vas a comparar un carácter existente nuevamente, es totalmente incoherente, es como hacer lo siguiente...

1
2
3
String palabraUno = "Hola mundo";
...
palabraUno = "Hola mundo";

O por ejemplo...

1
2
String palabraUno = "Hola mundo";
if(palabraUno.equals(palabraUno)){}


En el primer caso tienes una variable que tiene como valor "Hola mundo" le vuelves a pasar el mismo valor después de unas líneas de código, viene siendo ilógico. Mientras que en el segundo ejemplo comparas el mismo valor con el mismo valor, en ambos casos vienes cayendo al final en una redundancia la cual me atrevería a decir que no es permitida en ningún lenguaje de programación.

Ahora, si lo necesitas de esa manera tienes que agregar un paso más que precisamente es el de omitir los repetidos del arreglo ya que como menciono es redundante comparar la misma letra N cantidad de veces. Sin embargo, te informo que hice tu aplicación con la lógica que te mencione anteriormente y funciona sin problema alguno, obviamente yo no tengo caracteres repetidos a comparar, pero si gustas y crees que te sirve puedo compartirte el código sin problema alguno, ya sea por acá o bien por correo electrónico.

No obstante, te invito a que analices el problema, ya que si lo llevamos a la vida cotidiana viene siendo lo mismo, por ejemplo, tu como señorita piensas ir a comprar un maquillaje en especial, y en el mostrador tienes maquines de diferentes estilos, marcas, etc. Cuando solicitas a la persona que te esta atendiendo que necesitas ver tal producto para ver y comparar los productos, lo que haces es comparar maquillajeA con maquillajeB, maquillajeA con maquillajeC, etc. En tus comparaciones no cairias en esto maquillajeA con maquillajeA...

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar