Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Danny72 en 04 de Septiembre 2015, 13:38
-
Buenas,
estoy intentando compilar el ejercicio pero me encuentro con un error del que no consigo salir.
Aquí posteo el código.
/**
* CU00662B
*/
import java.util.Scanner;
public class LletraALletra
{
public static void main (String[]args){
System.out.println("Comencem la prova");
System.out.println("Si us plau, introduïu la primera entrada:");
EntradaDeTeclado entrada1 = new EntradaDeTeclado();
System.out.println("Si us plau, introduïu la segona entrada:");
EntradaDeTeclado entrada2 = new EntradaDeTeclado();
System.out.println("Gràcies");
int longitud1 = entrada1.getLongitud();
int longitud2 = entrada2.getLongitud();
int longitudbase = 0;
if (longitud1<longitud2){
longitudbase = longitud2;
}else {longitudbase = longitud1;
}
for (int i = 0; i < longitudbase; i ++){
if (entrada1.substring (i,i + 1).equalsIgnoreCase(entrada2.substring (i,i + 1))){
System.out.println("¿Lletra "+i+" igual en las dos palabras? True");
} else if (longitud1<longitudbase){
System.out.println("La paraula 1 no té lletra "+i);
} else if (longitud2<longitudbase){
System.out.println("La paraula 2 no té lletra "+i);
} else {
System.out.println("¿Lletra "+i+" igual en las dos palabras? False");
}
}
}
}
El error que me da cuando compilo es "cannot find symbol - method substring(int,int), indicándome el substring que he escrito para controlar los caracteres de la entrada2.
¿En qué me he equivocado?, gracias.
-
Hola Danny!
Bienvenido al foro.
Estuve revisando tu ejercicio. Ha faltado que publiques la clase EntradaDeTeclado para que se pueda compilar.
De todos modos, analizando el ejercicio es muy extraño que te de ese error que describes. Más bien debería darte un error en tiempo de ejecución que sería:
java.lang.StringIndexOutOfBoundsException: String index out of range
ya que el código tal como está escrito en un momento intenta acceder a una letra que no existe (en la palabra más corta).
Por ejemplo, si la entrada1 es "hola" (4 letras) y la entrada2 es "hola2" (5 letras), el programa querrá acceder a la letra número 5 de la entrada1 y te dará el mensaje de error anteriormente descrito.
Te sugiero revises el siguiente link:
https://www.aprenderaprogramar.com/foros/index.php?topic=2089.msg10280#msg10280
-
Buenos días, gracias por contestar tan rápido, te adjunto el código de la entrada de texto, básicamente es el que tenéis escrito en la lección CU00661B.
Como indicas, el código no está acabado, lo que me gusta es ir probando a medida que lo escribo para buscar y solucionar errores así como ver poco a poco como reacciona el programa.
/**
* CU00661B
*/
import java.util.Scanner;
public class EntradaDeTeclado
{
private String entradaDeTeclado;
public EntradaDeTeclado (){
entradaDeTeclado="";
pedirEntrada();
}
public void pedirEntrada(){
Scanner entradaEscaner = new Scanner(System.in);
entradaDeTeclado = entradaEscaner.nextLine(); }
public String getEntrada (){ return entradaDeTeclado ; }
public String getPrimeraPalabra(){
for(int i=0;i<entradaDeTeclado.length()-1;i++){
if (entradaDeTeclado.substring(i,i+1).equalsIgnoreCase("j")){
System.out.println("Hemos detectado una j");
}
}
for(int i=0;i<entradaDeTeclado.length()-1;i++){
if(entradaDeTeclado.substring(i,i+1).equals(" ")){
return entradaDeTeclado.substring(0,i+1); }
}
return entradaDeTeclado;
}
public int getLongitud(){
return entradaDeTeclado.length();
}
}
También, tal como indicas, no es normal que me de ese error, te adjunto un pantallazo para que veas mi problema.
Acabo el programa y te lo remito para su valoración, quizá cuando lo termine no me salga este error... :-\
-
Me he estado peleando un poco para conseguir colgar la imagen, pero ahí la tienes
(https://photos-2.dropbox.com/t/2/AABSaUbBOCtPGJRdT3dNwaRvggeyxXCwsSuP8N80D8uUHQ/12/462890365/jpeg/32x32/1/_/1/2/error.jpg/EIOjnN8DGAcgBygH/KSiN9S0kng3TA_cm8W_fHme2SLB9caMoPqcub53ov4g?size=800x600&size_mode=2)