Exercice Java trouver 6 erreurs de code

noobprogrammer -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Le but est de trouver 6 erreurs dans le code suivant :
package exam;
import java.util.List;

public class Employee extends Serializable {
private name;

public String getName() {
return name
}

public void setName(String name) {
name = name;
}
public static void main(String[] args) {
List<Employee> employees=new List<Employee>();
for(String name:args) {
employees.add(new Employee(name));
}
}
}


Ce que j'ai trouvé :

1ere erreur: private String name;
2eme erreur: return name ;

Ensuite je ne suis pas sûr:

3eme erreur : this.name = name;
4eme erreur : List<Employee> employees=new ArrayList<Employee>();

Et je n'ai pas d'idée pour les 5eme et 6eme erreurs...

Je vous remercie d'avance pour votre aide !

2 réponses

  1. noobprogrammer
     
    D'accord et je me demandais : ca veut dire quoi ce bout de code?
    for(String name:args) {
    employees.add(new Employee(name));
    }


    je ne comprends pas comment fonctionne le for(String name:args)
    1
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Pour chaque String name dans args ajouter un nouvel Employee(name) dans employeees
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      C'est une boucle for each, qui parcourt le tableau case par case, c'est donc équivalent à :

      for (int i=0; i<args.length; i++)
      {
          String name = args[i];
          employees.add(new Employee(name));
      } 


      Remarque : on peut aussi utiliser ce genre de boucle sur des objets Iterable (les Collection en particuler), les deux codes suivants sont donc "équivalents" :

      for (Employee emp : employees)
      {
          ...
      }
      
      for (Iterator<Employee> it = employees.iterator(); it.hasNext(); )
      {
          Employee emp = it.next();
          ...
      }
      0
    3. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      De plus les boucles for simplifiées sont (parfois) plus rapide que les boucles for normales (selon le type d'objet, et la JVM; par exemple ces boucles for sont plus rapides que des for classiques sur Android (et sa VM Dalvik))
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      En effet, les iterator sont toujours plus rapide que l'accès à des méthodes, par exemple des get(i) sur des LinkedList va devoir parcourir tous les éléments entre 0 et i pour récupérer l'objet, ce qui va faire un parcours de tous les éléments beaucoup plus long que les itérator qui eux vont se déplacer d'un objet à son suivant direct en utilisant la structure interne de la classe (souvent optimisée, comme sous Android j'imagine)
      0
  2. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    Voici un outil qui détecte certaines fautes et ambiguités dans des codes java.
    Plus sérieusement, les fautes 5 et 6 sont:
    - pas de constructeur défini pour Employee
    - classe Serializable pas importée (je crois)
    De plus, si tu utilises une ArrayList, importe la aussi.
    Le Visual Basic c'est bien, mais qu'au début. C++ wins everything.
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Serializable n'est pas une classe mais une interface, il faut donc faire implements à la place de extends (et importer java.io.Serializable)

      Remarque : en pratique il faudrait aussi implémenter les attributs et méthodes de cette interface pour qu'elle puisse être utilisée (voir sa documentation : java.io.Serializable)
      0