Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Posición letras

Hola. Me presento soy Jordi y estoy aprendiendo programación y me gustaría trabajar un pequeño juego para niños que consiste en dar una palabra ya sea 'OLAS' y que tenga 2 vocales 'E' y 'i' y 10 consonantes 'F' 'G' 'R' 'S' 'Q' 'G 'H' 'J' 'L' 'M',
donde podrá editar la palabra HOLA con las letras dadas (vocales y consonantes).

Por lo tanto:
Si cambia tan sola una letra le da= 1 punto.
Si cambia 2: 3 puntos
Cambia 1 letra y orden de la palabra = 10 puntos
Cambia palabra completa = 0 puntos.

He intentado guardarlos en arrays para tener guardadas cada posición. Pero no encuentro la manera de comparar ambos arrayz tanto de las palabras dadas con lo la introducida sin que compare toda (solo necesito que compare posiciones).


Codigo
private static int puntos = 0;
public static void main(String[] args) {
BufferedReader st = new BufferedReader (new InputStreamReader (System.in));
String line;

System.out.println ("Aprende palabras");
String palabra[] = {"O", "L", "A","S" };

String dadas[] = {"E", "I","F", "G", "R", "S", "Q", "G", "H", "J", "L", "M"};
String ingresada [] = new String [23];

for (int x=0; x<palabra.length; x++){
System.out.print (palabra[x]);
}
System.out.println("\n Estas son tus letras para poder editar" + '\n');
for (int x=0; x<dadas.length; x++){
System.out.print (dadas[x]);
}


}
}

febrero 7, 2014 | Unregistered Commenterkointer77

public class Test {

public static void main(String[] args) {
String dadas[] = {"E", "I", "F", "G", "R", "S", "Q", "G", "H", "J", "L", "M"};
System.out.println("Índice de la letra L: " + Arrays.asList(dadas).indexOf("L"));
}
}

Resultado: 10

febrero 7, 2014 | Registered Commenterchoces

Choces, gracias por la rápida respuesta, pero lo que me has puesto me imprime lo localización de la letra, y yo lo que quiero es comparar ambas dadas y ver el cambio.

Aún así, probé un cambio de forma de ver el juego, y consiste en pedir dos entradas de texto y comprobar los cambios que hay en las palabras introducidas.

De este modo el código me quedaría de la siguiente forma;

public class Juego {



public static void main (String [] args) throws IOException {

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println("Introduce primer array");
String palabra = br.readLine();
char[] array1 = palabra.toCharArray();
// System.out.println (array1);

System.out.println("Introduce segundo array");
String pal2 = br.readLine();
char[] array2 = pal2.toCharArray();
//System.out.println (array2);


for (int i = 0; i < palabra.length(); ) {
while (array1[i] == array2[i]){
i++;
System.out.println("Letra " + i + " iguales");

} if (array1[i] != array2[i]){
System.out.println ("Diferentes "+ i + " letra");
i++;

}
}
}
}

Ahora mi duda es, ¿Cómo hago para que si hay un sólo cambio de letra (tila, tela cambia solo una letra) me imprima 1 letra cambiada, si el cambio es dos letras "Dos letras cambiadas" y si es tres... etc.y si es la palabra completa pues me salte un error.

febrero 7, 2014 | Unregistered Commenterkointer77

public class Test {

public static void main(String[] args) {
String[] orginal = {"T", "E", "L", "A"};
String[] nuevo = {"T", "I", "L", "E"};
int contador = 0;
if (Arrays.equals(orginal, nuevo)) {
System.out.println("son idénticos");
} else {
for (int idxOriginal = 0; idxOriginal < orginal.length; idxOriginal++) {
if (!orginal[idxOriginal].equals(nuevo[idxOriginal])) {
contador++;
}
}
}
if (contador == 4) {
System.out.println("son diferentes");
} else {
System.out.println("cambios= " + contador);
}
}
}

febrero 7, 2014 | Registered Commenterchoces

Perfecto, muchas gracias Choces...

Duda resuelta ;)

febrero 7, 2014 | Unregistered Commenterkointer77