IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Détections des erreurs dans le code source


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2017
    Messages : 9
    Par défaut Détections des erreurs dans le code source
    Nom : Capture du 2017-11-30 19-56-29.png
Affichages : 125
Taille : 21,6 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    package tpnote;
     
    import java.util.AbstractSet;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Objects;
    import java.util.Set;
     
    public class SetList<T> extends AbstractSet<T> {
    	private List<T> thelist;
     
    	public SetList(List<T> l) {
    			thelist=l;
    	}
     
    	@Override
    	public Iterator<T> iterator() {
     
    	return new Iterator<T>() {
     
    				private Set<T> set = new HashSet<>();
    				private Iterator<T> it = thelist.iterator();
    				private T nextelement = null;
     
    				@Override
    				public boolean hasNext() {
    					if (!it.hasNext()) return false;
    					nextelement = it.next();
    					if (set.contains(nextelement)) return hasNext(); 
    					return true;
    				}
     
    				@Override
    				public T next() {
    					set.add(nextelement);
    					return nextelement;
    				}
     
    			};
    		}
     
    		@Override
    		public int size() {
    			int size = 0;
    			Iterator<T> it = iterator();
    			while(it.hasNext()) {
    				it.next();
    				size++;
    			}
    			return size ;
    		}
     
     
    		@Override
    		public boolean add(T e) {
    			if (thelist.contains(e)) return false;
    			thelist.add(e);
    			return true;
    		}
     
    		@Override
    		public boolean remove(Object o) {
    			boolean flag = false;
    			Iterator<T> it = thelist.iterator();
    			while (it.hasNext()) {
    			   T e = it.next();
    			   if (Objects.equals(e, o)) {
    				   flag=true;
    				   it.remove();
    			   }
    			}
    			return flag;
    		}
     
    	}
    on me dit qu'il y a des erreurs dans ce code ,de le*trouver mais j'arrive pas a le voir pouvez vous m'aidez

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ben ton iterator m'a l'air un peu bancal. Soit tu veux retourner tous les éléments de la liste sous jacente, dans ce cas retourne son iterateur, soit tu veux ne retourner que les éléments unique, dans ce cas pourquoi s'arrêter à un seul doublon dans ton test? Que se passe t il si la liste contient [1 2 2 3 3 3 1 4 5 1 2 3 4 7]? Que va retourner l'itérateur d'après toi? Tu as aussi oublié d'implémenter le remove sur l'opérateur.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2017
    Messages : 9
    Par défaut
    Soit vous voulez retourner tous les éléments de la liste sous adjacente, dans ce cas retourne son itérateur
    R: non je ne veux pas
    - soit tu veux retourner que les éléments unique, dans ce cas pourquoi s'arrêter à un seul doublon dans le test?
    Que se passe t il si la liste contient [1 2 2 3 3 3 1 4 5 1 2 3 4 7]?
    Que va retourner l'itérateur d'après ?

    Reponse : c'est en effet ça que je veux, mais mon code ne s'arrête pas à un seul doublons


    j'ai en effet oublié d'implémenter le remove sur l'itérateur!! Et avec mon impléméntation c'est difficile, je dois aussi changer celle de next
    Merci man.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2017
    Messages : 9
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ben ton iterator m'a l'air un peu bancal. Soit tu veux retourner tous les éléments de la liste sous jacente, dans ce cas retourne son iterateur, soit tu veux ne retourner que les éléments unique, dans ce cas pourquoi s'arrêter à un seul doublon dans ton test? Que se passe t il si la liste contient [1 2 2 3 3 3 1 4 5 1 2 3 4 7]? Que va retourner l'itérateur d'après toi? Tu as aussi oublié d'implémenter le remove sur l'opérateur.
    voici la solution avec remove

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    import java.util.AbstractSet;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Objects;
    import java.util.Set;
     
    public class SetList2<T> extends AbstractSet<T> {
     
     
    	private List<T> thelist;
     
    	public SetList2(List<T> l) {
    		thelist=l;
    		}
     
    	@Override
    	public Iterator<T> iterator() {
    		// TODO Auto-generated method stub
    		return new Iterator<T>() {
     
    			private Set<T> set = new HashSet<>(thelist);
     
    			private Iterator<T> it = set.iterator();
     
    			T nextelement = null;
     
    			boolean removeflag = false;
     
    			@Override
    			public boolean hasNext() {
    				return it.hasNext();
    			}
     
    			@Override
    			public T next() {
    				removeflag = false;
    				nextelement = it.next();
    				return nextelement;
    			}
     
    			@Override
    			public void remove() {
    				if (removeflag) throw new IllegalStateException();
    				removeflag=true;
    				Iterator<T> listit = thelist.iterator();
    				T listnextelement = null;
    				while (listit.hasNext()) {
    					listnextelement=listit.next();
    					if (Objects.equals(listnextelement, nextelement))
    						listit.remove();
    				}
    			}
    		};
    	}
     
    	@Override
    	public int size() {
    		int size = 0;
    		Set<T> set = new HashSet<>(thelist);
    		return set.size() ;
    	}
     
     
    	@Override
    	public boolean add(T e) {
    		if (thelist.contains(e)) return false;
    		thelist.add(e);
    		return true;
    	}
     
    	@Override
    	public boolean remove(Object o) {
    		boolean flag = false;
    		Iterator<T> it = thelist.iterator();
    		while (it.hasNext()) {
    		   T e = it.next();
    		   if (Objects.equals(e, o)) {
    			   flag=true;
    			   it.remove();
    		   }
    		}
    		return flag;
    	}
     
    }

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2017
    Messages : 9
    Par défaut
    Nom : Capture du 2017-12-01 15-33-35.png
Affichages : 99
Taille : 19,8 Ko

    Voici mon deuxième code , déjà merci pour le premier si ta encore un peu de temps ou celui qui p réussir a détecter une erreur ça me rendrais service pour améliorer ce code. merci
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
     
     
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.List;
     
    public class Reflex {
    	public static List<Object> results (Object o) 
    	{
    		List<Object> answer = new ArrayList<>();
    		for (Method m:o.getClass().getMethods()) 
    		{
    			if(m.getParameterTypes().length==0 && m.getReturnType()!=void.class) 
    			{
     
    				try 
    				{
    					answer.add(m.invoke(o));
    				} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e){}
     
    			}
    		}
    		return answer;
    	}
    }
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2012, 18h25
  2. Des accents dans le code source ?
    Par JolyLoic dans le forum C++
    Réponses: 21
    Dernier message: 30/01/2009, 19h51
  3. Réponses: 22
    Dernier message: 28/01/2007, 21h00
  4. erreur dans le code source
    Par oracle.walid dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 16h17
  5. [3.0.2]Détection des erreurs dans le Package Explorer
    Par willowII dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 18/08/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo