Autor Tema: java.lang.NullPointerException Problema con el ejercicio CU00666B For Extendido  (Leído 3373 veces)

niurkafer

  • Principiante
  • **
  • Mensajes: 50
    • Ver Perfil
Hola buenas tengo un problema que no me deja seguir avanzando porque cada vez que compilo me dice que no tengo ningun error y introduzco el nombre y salta el siguiente error

java.lang.NullPointerException
   at ListaCantantesFamosos.addNombres(ListaCantantesFamosos.java:17)
   at test.main(test.java:14)


y me senala esta linea de Clase:ListadeCantantesFamosos

Código: [Seleccionar]
public void addNombres (String nombres){listaCantantes.add(nombres);}
Citar
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir tantos cantantes como se desee, para ello usa un bucle while que dé opción a elegir al usuario)

Clase:ListadeCantantesFamosos
Código: [Seleccionar]
import java.util.*;
//Test del for extendido ejemplo aprenderaprogramar.com
public class ListaCantantesFamosos {
    private ArrayList<String> listaCantantes;
    private String cantanteFamoso;

    public void ListaCantantesFamosos (String nombres){
        listaCantantes = new ArrayList<String>();
        listaCantantes.add("Enrique Iglesias");
        listaCantantes.add("Julio Iglesias");
        listaCantantes.add("Chayane");   

    }

    public void addNombres (String nombres){listaCantantes.add(nombres);}

    }

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

public class test {
    private String cantante;
    private String pregunta;
    public static void main (String [] Args){
        System.out.println ("Hola empezemos a programar");
        System.out.println ("Por Favor Introduzca el nombre de un Cantante");
        String entradaTeclado ="";
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine();
        System.out.println ("Gracias");
        ListaCantantesFamosos ListaCantantesFamosos = new ListaCantantesFamosos();
        ListaCantantesFamosos.addNombres (entradaTeclado);
        String pregunta ="";
       
        System.out.println ("Desea Ingresar Otro Cantante SI o No");
        if(!pregunta.equalsIgnoreCase("si")){
            System.out.println ("Por Favor Introduzca el nombre de un Cantante");
            entradaTeclado = entradaEscaner.nextLine();
        }
       
        else{ System.out.println("Hasta Luego");
        }
    }
}

Gracias  :'(
« Última modificación: 27 de Agosto 2015, 19:39 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

Tienes un error de escritura (o varios) que hace que el compilador "se vuelva loco"

Código: [Seleccionar]
        ListaCantantesFamosos ListaCantantesFamosos = new ListaCantantesFamosos();
        ListaCantantesFamosos.addNombres (entradaTeclado);

El objeto no puede tener el mismo nombre que la clase. Tendrás que declarar el objeto con un nombre (puede ser simplemente la primera letra en minúsculas) distinto de la clase
Código: [Seleccionar]
        ListaCantantesFamosos listaCantantesFamosos = new ListaCantantesFamosos();
        listaCantantesFamosos.addNombres (entradaTeclado);


También tienes mal declarado el constructor en la clase ListaCantantesFamosos

No debe ser public void ListaCantantesFamosos (String nombres){ porque un constructor no lleva void, además ¿para qué sirve el parámetro nombres?

Será  public ListaCantantesFamosos (){

Este método también está mal definido: public void addNombres , no será addNombres si la finalidad del método es añadir un nombre será addNombre y el parámetro a recibir no será (String nombres) sino (String nombre) porque es uno solo.

También te falta mostrar la lista por pantalla cuando se introducen nombres

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

niurkafer

  • Principiante
  • **
  • Mensajes: 50
    • Ver Perfil
vale muchas gracias ya me pongo a terminar el resto del ejercicio gracias por las correcciones como siempre estaré mas atenta :)

 

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