Estoy tratando de Mostrar los elementos individuales de un Objeto que he creado.

Se trata de un sencillo programa en Java que permite a los usuarios agregar y mantener un seguimiento de los datos del Jugador.

Sólo estoy perplejo cuando se trata de mostrar los detalles después de que se han añadido ya. aquí es lo que mi código es

Puedo crear el objeto y la entrada en el arraylist ningún problema con el caso 2, pero cuando trato de imprimir lo que yo quiero hacer algo como

System.out.println("Player Name" + myPlayersArrayList.PlayerName + "Player Position" + myPlayerArrayList.PlayerPosition + "Player Age" + "Player Age");

Sé que no es correcto, pero yo realmente no sé qué hacer, si alguien puede ser de cualquier ayuda sería muy apreciada. Gracias

System.out.println("Welcome to the Football Player database");
 System.out.print(System.getProperty("line.separator"));


     UserInput myFirstUserInput = new UserInput();
    int selection;
            ArrayList<Player> myPlayersArrayList = new ArrayList<Player>();

            while (true) {

                System.out.println("1. View The Players");
                System.out.println("2. Add A Player");
                System.out.println("3. Edit A Player");
                System.out.println("4. Delete A Player");
                System.out.println("5. Exit ") ;
                System.out.print(System.getProperty("line.separator"));

                selection = myFirstUserInput.getInt("Please select an option");
                System.out.print(System.getProperty("line.separator"));
                switch(selection){


        case 1: 

                        if (myPlayersArrayList.isEmpty())
                                    {
                        System.out.println("No Players Have Been Entered Yet");
                        System.out.print(System.getProperty("line.separator"));
                        break;}

                        else 
                        {for(int i = 0; i < myPlayersArrayList.size(); i++){
                            System.out.println(myPlayersArrayList);

        }
                    break;

                    case 2:  {

                        String playerName,playerPos;
                        int playerAge;

                                playerName = (myFirstUserInput.getString("Enter Player name"));
                                playerPos = (myFirstUserInput.getString("Enter Player Position"));
                                playerAge = (myFirstUserInput.getInt("Enter Player Age"));   

                                myPlayersArrayList.add(new Player(playerName, playerPos, playerAge));   ;
                                                        break;
                    }
InformationsquelleAutor user1180888 | 2012-10-15

6 Comentarios

  1. 4

    Que usted necesita para utilizar el índice de acceso a cada elemento: –

    for(int i = 0; i < myPlayersArrayList.size(); i++){
        System.out.println(myPlayersArrayList.get(i));
    }

    Se puede reemplazar toString() método en su Player clase

    public String toString() {
        return playerName + " : " + playerAge + " : " + playerPosition;
    }
    • Gracias por la respuesta, cuando voy a agregar [i] a la final, aunque dice «matriz necesario, pero ArrayList<Jugador> encontrado».
    • Ah! Lo que usted necesita hacer myPlayerList.get(i) a buscar, y myPlayerList.add() para agregar algo..
  2. 2

    Puedo crear el objeto y la entrada en el arraylist ningún problema con el caso 2, pero cuando trato de imprimir lo que yo quiero hacer algo como

    System.out.println("Player Name" + myPlayersArrayList.PlayerName + "Player Position" + myPlayerArrayList.PlayerPosition + "Player Age" + "Player Age");

    Sé que no es correcto, pero yo realmente no sé qué hacer, si alguien puede ser de cualquier ayuda sería muy apreciada. Gracias


    Acaba de anular toString() método para obtener la salida deseada

  3. 1

    También puede utilizar ‘para cada lazo. Esta es la sintaxis:

    for(Class object : collectionOfObjects){
        //this will loop through the list for you and
        //now you can access each object in the list 
        //using object.property or object.method()
    }
    
    //using your example
    for(Player player: myPlayersArrayList){
        System.out.println(player); //requires override of toString() method
    
        //or you could use
        System.out.println(player.getName());
    }
    • Wow esto funcionó brillantemente. ¿Cómo es que sabe que es el uso de la ‘toString’ método aunque? No vea como se hace referencia a ella a mí(?). Gracias!
    • Cuando pones un nombre de objeto en el interior del Sistema.a cabo.println() el método toString() es llamado automáticamente. Usted también puede llamar objeto.toString() explícitamente, pero como has visto, que no es necesario.
  4. 1

    Un List es una colección de elementos. El List proporciona una serie de métodos útiles que le permite gestionar, add, remove, set, indexOf, contains y lo que es más importante, en este caso, get.

    Con el fin de manipular un elemento dentro de la lista, primero necesita «get» o recuperar de la lista.

    List son Iterable, esto significa que usted no necesita utilizar un índice for bucle para obtener acceso a los diversos miembros (a menos que el índice de importancia).

    Por lo que usted puede hacer…

    for(int i = 0; i < myPlayersArrayList.size(); i++){
        Player player = myPlayersArrayList.get(i);
        //display results
    }

    o

    for (Player player : myPlayersArrayList) {
        //display results
    }

    Para mostrar el contenido de la Player objeto que usted puede hacer un número de cosas diferentes…

    Usted podría simplemente mostrar las diferentes propiedades de los Player (no tengo acceso a su Player clase, así que me imagino en sus propiedades)

    System.out.println("Player Name: " + player.PlayerName + "; Player Position: " + player.PlayerPosition + "Player Age: " + player.PlayerAge);

    O usted podría escribir un «formateador» método. Esto podría ser estática a la Player clase o podría ser parte de la clase de utilidad, dependiendo de sus necesidades

    System.out.println(PlayerUtils.format(player)); //Format the player properties as you see fit

    O puede, como ya se sugieren, reemplazar el toString método de la Player

    System.out.println(player);

    Hay ventajas y desventajas a todos estos enfoques.

    Tiendo a como poner los datos de diagnóstico en mi toString métodos que no es normalmente útil para mostrar al usuario. Los formateadores no siempre son obvios para otros desarrolladores (a menos que estén bien documentados ;)).

    Usted tendrá que elegir los que son más útiles para usted y sus necesidades.

  5. 1

    También puede utilizar forEach en Java 8:

    List<String> myPlayersArrayList = new ArrayList<>();
    myPlayersArrayList.stream().forEach((player) -> {
        System.out.println("Player: " + player); //Override toString() in Player class
    });
  6. 0

    Si sólo desea mostrar los datos inmediatamente después de que se agrega, se puede declarar un Jugador de referencia y hacer que se seleccione el objeto que desea agregar a la lista, así:

    Player p = new Player(playerName, playerPos, playerAge);
    myPlayersArrayList.add(p);
    System.out.println("Player Name" + p.PlayerName + "Player Position" + p.PlayerPosition + "Player Age" + p.playerAge);

    Acceso directo a un objeto, atributos, sin embargo, es muy mal visto en un entorno de programación orientada a objetos, por lo que debe recuperar a través de los métodos get. Por ejemplo, para obtener el nombre de los jugadores, esto sería suficiente:

    public String getPlayerName(){
        return playerName;
    }

    Si desea imprimir los datos más tarde, tal vez usted debe tomar una mirada en el patrón iterador.

Dejar respuesta

Please enter your comment!
Please enter your name here