Autor Tema: java utiliza operaciones no comprobadas o inseguras. Recompile con -Xll CU00666B  (Leído 4290 veces)

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Hola a todos. Ya sé que son fechas señaladas para muchos pero yo sigo totalmente enganchado a ésto y no puedo parar. Éste es el código que he realizado para este ejercicio. Estoy contento de como me ha quedado con su bucle for-each en el método main de la clase Test y todo  ;D...pero con muchas dudas. Quería probar a usar un método para cada cosa pero con eso del static del main me he visto obligado a poner static en todas la variables y métodos, ¿Es eso correcto o dará algún problema ?.
Cuando compilo la clase Test me sale un warnig que no entiendo (lo entiendo pero no lo comprendo  ???) , aún así todo funciona.

C:\....\TestListaCantantesFamosos.java uses unchecked or unsafe operations. Recompile with -Xllntunchecked ror(sic) detalls (sic).

Aquí la clase ListaCantantesFamosos.

Código: [Seleccionar]
import java.util.*;
public class ListaCantantesFamosos {
    private ArrayList<String> lista1;
   
    public ListaCantantesFamosos () {
        lista1 = new ArrayList<String> ();
        lista1.add("Pepe"); 
        lista1.add("Juan");
        lista1.add("Jaime");
    }
   
    public String getNombre (int pos) {return lista1.get(pos);}
   
    public void addCant (String name) {lista1.add(name);}
   
    public int sizeList () {return lista1.size();}
}

Y aquí la reina de mis ojos  ;), la clase TestListaCantantesFamosos.

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

public class TestListaCantantesFamosos {
    static String entrada = "";
    static ListaCantantesFamosos lista2 = new ListaCantantesFamosos();//este static me parecía raro
    static String tec = "";
    static boolean si = true;
   
    public  static void scan1 () {
        System.out.println ("Por favor introduzca nombre de famoso");
        Scanner scanner1 = new Scanner (System.in);
        entrada = scanner1.nextLine ();
        lista2.addCant(entrada);
    }

    public  static void pedirNombre() {       
        System.out.println ("¿Desea introducir otro nombre?: Sí, No");
        Scanner ent = new Scanner (System.in);
        tec = ent.nextLine();
        TestListaCantantesFamosos.eval();
    }

    public static void eval ()   {

        if (tec.equalsIgnoreCase("sí") || tec.equalsIgnoreCase("si") ){

            TestListaCantantesFamosos.scan1();

        }
        else if (tec.equalsIgnoreCase("no")){si = false;}

        else {
            System.out.println ("Entrada no válida");
            TestListaCantantesFamosos.pedirNombre(); 
       
        }
    }

    public static void main(String [] args) {

        TestListaCantantesFamosos.scan1();

        TestListaCantantesFamosos.scan1();
       
            do {
                TestListaCantantesFamosos.pedirNombre();

            } while (si == true);

            System.out.println ("La lista contiene los nombres siguientes:");
            ArrayList<String> lista3 = new ArrayList();
            int i = 0;
            for (i = 0; i < lista2.sizeList();i++) {
                lista3.add(lista2.getNombre(i));
            }
            for (String a:lista3){
                System.out.println (a);
            }
            System.out.println ("Fin del programa.Gracias por su participación");
        }

    }
Gracias de nuevo por vuestro apoyo y paciencia...  y Bon Nadal desde Valencia. (despedida con rima :P)
« Última modificación: 12 de Febrero 2017, 19:47 por Alex Rodríguez »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #1 en: 26 de Diciembre 2016, 07:12 »
Buenos días y feliz Navidad.

Habría una forma más sencilla de realizar este ejercicio:
Código: [Seleccionar]
import java.util.ArrayList;
public class ListaCantantesFamosos1{
    private ArrayList<String> listaCantantesF;
    public ListaCantantesFamosos1(){
        listaCantantesF = new ArrayList<String>();
        listaCantantesF.add("Jose Feliciano");
        listaCantantesF.add("Silvio Rodriguez");   
        listaCantantesF.add("Manuel Garcia");
    }

   public ArrayList<String> getListaCantantesF(){
        return listaCantantesF;}

    public void setNuevoCantante(String nuevoCantante){
        listaCantantesF.add(nuevoCantante);
    }

    public void mostrarLista (){
        int i=1;
        for ( String cantante:listaCantantesF){
            System.out.println ( (i)+ "- " + cantante );
            i++;
        }
    } 
}
Código: [Seleccionar]
import java.util.Scanner;
public class TextListaCantantesFamosos1{
    public static void main (String [] args){ 
        ListaCantantesFamosos1 listaCantantes=new ListaCantantesFamosos1();       
        Scanner entradaEscaner = new Scanner (System.in);       
        int resp=0;
       
        System.out.println ("Empezamos el programa");
        listaCantantes.mostrarLista();

        while (resp==0) {
            System.out.println ("Por favor escriba el nombre de un cantante famoso");         
            listaCantantes.setNuevoCantante(entradaEscaner.nextLine ());
            listaCantantes.mostrarLista();
            System.out.println (" Si deseas introducir otro cantante escribe Si.\nSi quieres salir pulsa intro.");
            if (!entradaEscaner.nextLine ().equalsIgnoreCase("Si")){resp=1;}           
        }
        System.out.println (" Adios");       
    }
}

Si el método mostrar lista lo quieres poner en el main podría ser:
Código: [Seleccionar]
import java.util.ArrayList;
public class ListaCantantesFamosos1{
    private ArrayList<String> listaCantantesF;
    public ListaCantantesFamosos1(){
        listaCantantesF = new ArrayList<String>();
        listaCantantesF.add("Jose Feliciano");
        listaCantantesF.add("Silvio Rodriguez");   
        listaCantantesF.add("Manuel Garcia");
    }

  public ArrayList<String> getListaCantantesF(){
        return listaCantantesF;}

 
}
Código: [Seleccionar]
import java.util.Scanner;
import java.util.ArrayList;
public class TextListaCantantesFamosos2{   

    public static void main (String [] args){
       
        Scanner entradaEscaner = new Scanner (System.in);     
        ArrayList<String> lista=new ListaCantantesFamosos1().getListaCantantesF();
       
        System.out.println ("Empezamos el programa");   
        TextListaCantantesFamosos2.mostrarLista(lista);
        int resp=0;
        while (resp==0) {
            System.out.println ("Por favor escriba el nombre de un cantante famoso");           
            lista.add(entradaEscaner.nextLine ()); 
            TextListaCantantesFamosos2.mostrarLista(lista);
            System.out.println (" Si deseas introducir otro cantante escribe Si.\nSi quieres salir pulsa intro.");
            if (!entradaEscaner.nextLine ().equalsIgnoreCase("Si")){resp=1;}
        }         
        System.out.println ("Adios");
    }
   
      public static void mostrarLista (ArrayList<String> listaCantantesF){
        int i=1;
        for ( String cantante:listaCantantesF){
            System.out.println ( (i)+ "- " + cantante );
            i++;
        }
    } 
}

Un saludo

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #2 en: 26 de Diciembre 2016, 10:56 »
Hola de nuevo ESOJ y muchas gracias otra vez por tu ayuda, ya te dije en:

https://www.aprenderaprogramar.com/foros/index.php?topic=5726.0

que lo del tipo ArrayList en la signatura de métodos me iba a cambiar la vida ;D.
La verdad es que compliqué la clase Test adrede por que quería jugar a llamar métodos, aunque reconozco que de no ser así, por lo menos con mis conocimientos actuales, quizá no me hubiera quedado tan elegante como el tuyo en un solo bucle while.
Lo de empeñarme en poner el método mostrarLista en el main de la clase Test es porque así lo especificaba el enunciado del ejercicio, o eso entendí yo:
Citar
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.
.
Hoy me has enseñado, además, que puedo usar los métodos directamente sin usar variables intermedias como parametros de otros métodos, con lo que ahorras varias líneas  y se simplifica mucho el código, que aunque no os lo creáis por el de este ejercicio sigue siendo mi  objetivo  ::). Hasta pronto a todos.
P.D. ¿Alguien sabe porqué me sale el warning?.
« Última modificación: 26 de Diciembre 2016, 10:58 por maxplanck »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #3 en: 28 de Diciembre 2016, 06:16 »
Buenos días.

El warning te dice :

C: \ .... \ TestListaCantantesFamosos.java utiliza operaciones no comprobadas o inseguras. Recompile con -Xllntunchecked ror (sic) detalls (sic).

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #4 en: 28 de Diciembre 2016, 16:57 »
Buenas maxplanck.

Creo que el warning te sale por esta línea:

Código: [Seleccionar]
ArrayList<String> lista3 = new ArrayList();
Me ha pasado algunas veces y siempre es porque en un Iterador, en un List o en un ArrayList me he dejado la parte de <E>. Escribe en tu código new ArrayList<String>();.

¡Saludos y Feliz Navidad!

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #5 en: 31 de Diciembre 2016, 19:51 »
Muchísimas gracias Erik_Escriche. Otra vez por no fijarme y dar las cosas por suponidas ;).
Error corregido y ya no sale el warning.
Gracias también ESOJ pero lo que quiero saber es que *os significa compilar con lo que sea  que signifique el modificador ese Xllntunchecked y como se hace.
« Última modificación: 31 de Diciembre 2016, 19:55 por maxplanck »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #6 en: 01 de Enero 2017, 08:29 »
Buenos días y feliz año.

En estos dos enlaces se da una buena explicación del tema:

http://programacion.net/foros/java-basico/warning_al_compilar_unchecked_or_unsafe_operations__293588
http://www.forosdelweb.com/f45/que-hacer-cuando-aparece-recompile-xlint-499531/

Un saludo
« Última modificación: 12 de Febrero 2017, 19:48 por Alex Rodríguez »

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Código JAVA del ejerccicio CU00666B Y.... feliz navidad mundo!!
« Respuesta #7 en: 01 de Enero 2017, 12:21 »
Gracias ESOJ mensaje recibido. Imagino que es compilando con javac - Xlint:unchecked en la  consola de Windows.

 

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