Exercice Java trouver 6 erreurs de code

Fermé
noobprogrammer - 22 mars 2013 à 18:03
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 22 mars 2013 à 18:41
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 !
A voir également:

2 réponses

noobprogrammer
22 mars 2013 à 18:25
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 22/03/2013 à 18:35
Pour chaque String name dans args ajouter un nouvel Employee(name) dans employeees
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 22/03/2013 à 18:37
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
22 mars 2013 à 18:37
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
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 22/03/2013 à 18:45
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 22/03/2013 à 18:13
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
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 22/03/2013 à 18:27
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