Autor Tema: Java cannot find symbol - method substring(int,int) ejercicio CU00662B  (Leído 3186 veces)

Danny72

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Buenas,

estoy intentando compilar el ejercicio pero me encuentro con un error del que no consigo salir.

Aquí posteo el código.

Código: [Seleccionar]
/**
 * 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.
« Última modificación: 09 de Septiembre 2015, 09:04 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
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:

Código: [Seleccionar]
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

Danny72

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re:El método equals en Java. Diferencia entre igualdad e id. Comparar objeto
« Respuesta #2 en: 07 de Septiembre 2015, 09:13 »
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.

Código: [Seleccionar]
/**
 * 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...  :-\

Danny72

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re:El método equals en Java. Diferencia entre igualdad e id. Comparar objeto
« Respuesta #3 en: 07 de Septiembre 2015, 09:36 »
Me he estado peleando un poco para conseguir colgar la imagen, pero ahí la tienes


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".