Autor Tema: cannot find symbol - class Test Java error compilar ArrayList ejercicio CU00665B  (Leído 2281 veces)

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Aquí está mi propuesta de respuesta del ejercicio CU00665B del curso aprenda a programar Java como si estuviera en primero de aprenderaprogramar. Solo que en la clase test me aparece un error y no se cómo solucionarlo.

Código: [Seleccionar]
import java.util.ArrayList;

public class ListaCantantesFamosos {
    private String nombres;
    public ArrayList<String> ListaFamosos;
   
    public String listaFamosos (String nombres){
        ListaFamosos = new ArrayList<String>();
        ListaFamosos.add ("Ariana Grande");
        ListaFamosos.add ("Dua Lipa");
        ListaFamosos.add ("Taylor Swift");
        return nombres;
    }
   
    public int getTamaño () {
        return ListaFamosos.size();
    }
   
    public void addFamosos (String valor_famosos){
        ListaFamosos.add(valor_famosos);
    }
   
    public void numeroCantantes(){
        for (int i = 0; i<ListaFamosos.size(); i++){
            if (i<ListaFamosos.size()){
                System.out.println ("Cantante" + (i+1) + " " + ListaFamosos.get(i));
            }else{System.out.println("No existe nombre para la posición solicitada");}
        }
    }
   
}


Código: [Seleccionar]
import java.util.Scanner;

public class TestListaCantantesFamosos {
   
    public static void main (String [] args){
        ListaFamosos ListaCantantes = new ListaFamosos();
        //System.out.println ("Aquí lista con unos tres cantantes: " + ListaCantantesFamosos.getlistaFamosos() + ".");
        System.out.println ("Por favor introduzca un cuarto cantante:");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println ("Por favor introduzca un quinto cantane:");
        EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println ("Gracias");
       
        System.out.println ("Aqui va la lista actualizada con " + ListaCantantes.getTamaño() + " cantantes");
       
    }
}
Muchas gracias!
« Última modificación: 18 de Agosto 2022, 17:53 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Clase ArrayList del api Java. Métodos add, size, etc. (CU00665B)
« Respuesta #1 en: 15 de Febrero 2022, 16:55 »
Estas lineas...
Código: [Seleccionar]
ListaFamosos ListaCantantes = new ListaFamosos();
//System.out.println ("Aquí lista con unos tres cantantes: " + ListaCantantesFamosos.getlistaFamosos() + ".");

La clase ListaFamosos no existe, tu clase se llama: ListaCantantesFamosos
ListaFamosos es el nombre que le has dado al atributo de tipo ArrayList, no es una clase, es un atributo de clase.
Y por tanto sería más correcto que su nombre comenzase en minúscula:listaFamosos

La siguiente lineas, que has marcado como comentario, también tiene errores.
Estás llamando un método llamado getListaFamosos(), que no has escrito.
Y de haberlo escrito, también fallaría porque lo estás invocando nombrando a su clase ListaCantantesFamosos, cuando lo normal sería invocarlo nombrando al objeto que se llama ListaCantantes (y que también sería más correcto que su nombre comenzase en minúscula)

De los métodos que has escrito, el que mostraría la lista de cantantes es el método numeroCantantes()
Código: [Seleccionar]
    public void numeroCantantes(){
        for (int i = 0; i<ListaFamosos.size(); i++){
            if (i<ListaFamosos.size()){
                System.out.println ("Cantante" + (i+1) + " " + ListaFamosos.get(i));
            }else{System.out.println("No existe nombre para la posición solicitada");}
        }
    }
Dicho método, en principio funcionaría bien, pero tiene una redundancia.
Dentro del bucle for, compruebas si el valor de i es menor que el size() del ArrayList para decidir si tienes una posición válida con la que pedir un valor al get().

En otro contexto, podría estar bien hacer esta comprobación. Pero en este caso, es innecesaria y redundante.
Porque el bucle for, ya tiene una condición que te asegura que la i SOLO tendrá valores menores que el size()
Citar
for (int i = 0; i<ListaFamosos.size(); i++){
Gracias a esa condicion, dentro del bucle for la i jamás tendrá un valor que supere el size(), así que no es necesario comprobarlo con un if.
Puedes confiar en pedirle valores al get() sin temor ninguno
Código: [Seleccionar]
    public void numeroCantantes(){
        for (int i = 0; i<ListaFamosos.size(); i++){
            System.out.println ("Cantante " + (i+1) + " " + ListaFamosos.get(i));
        }
    }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re: Clase ArrayList del api Java. Métodos add, size, etc. (CU00665B)
« Respuesta #2 en: 15 de Febrero 2022, 17:31 »
Correguí los errores pero sigo sin comprender porqué en la clase test me dan error esas dos líneas:
Código: [Seleccionar]
import java.util.Scanner;

public class TestListaCantantesFamosos {
   
    public static void main (String [] args){
        [color=red]listaFamosos[/color] ListaCantantes = new [color=red]listaFamosos[/color]();
        System.out.println ("Aquí lista con unos tres cantantes: " + [color=red]listaFamosos[/color].get() + ".");
        System.out.println ("Por favor introduzca un cuarto cantante:");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println ("Por favor introduzca un quinto cantane:");
        EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println ("Gracias");
       
        System.out.println ("Aqui va la lista actualizada con " + ListaCantantes.getTamaño() + " cantantes");
       
    }
}
« Última modificación: 15 de Febrero 2022, 20:47 por micaelasol »

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re: Clase ArrayList del api Java. Métodos add, size, etc. (CU00665B)
« Respuesta #3 en: 16 de Febrero 2022, 01:19 »
Ya lo he logrado resolver completo a ambos ;D ;D ;D
Código: [Seleccionar]
import java.util.ArrayList;

public class ListaCantantesFamosos
{
    private ArrayList <String> listaFamosos;
    private String métodoLength;
   
    public ListaCantantesFamosos () {
        listaFamosos = new ArrayList <String>();
        listaFamosos.add("Ariana Grande");
        listaFamosos.add ("Dua Lipa");
        listaFamosos.add("Ed Sheeran");
    }
   
    public void addNombre(String nombre){
        listaFamosos.add(nombre);
    }
   
    public ArrayList <String> getListaFamosos(){
        return listaFamosos;
    }
   
    public int getTamaño(){
        return listaFamosos.size();
    }
   
}

Código: [Seleccionar]
import java.util.Scanner;

public class TestListaCantantesFamosos
{
    public static void main (String [] args){
        Scanner entradaEscaner = new Scanner (System.in);
        ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos();
       
        System.out.println ("Así va la lista hasta ahora: ");
        for (int i=0; i<listaCantantes.getTamaño();i++){
            System.out.println ("\n Cantante número " + (i+1) + ": " + listaCantantes.getListaFamosos().get(i));
        }
       
        System.out.println ("");
       
        System.out.println("Ahora ingrese un cuarto cantante: ");
        String entrada1 = entradaEscaner.nextLine();
        listaCantantes.addNombre(entrada1);
       
        System.out.println("Y por último ingrese un quinto cantante: ");
        String entrada2 = entradaEscaner.nextLine();
        listaCantantes.addNombre(entrada2);
        //\n
        System.out.println ("Aqui va la lista actualizada: ");
        for (int i=0; i<listaCantantes.getTamaño();i++){
            System.out.println ("\n Cantante número " + (i+1) + ": " + listaCantantes.getListaFamosos().get(i));
        }
    }
}

Si hay alguna devolución o consejo lo recibo y agradezco! :)

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Clase ArrayList del api Java. Métodos add, size, etc. (CU00665B)
« Respuesta #4 en: 16 de Febrero 2022, 17:15 »
Ahora sí parece estar todo correcto  :D
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

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".