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 :

StackOverflowError probleme de debutant


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 6
    Points
    6
    Par défaut StackOverflowError probleme de debutant
    bonsoir , j’essaie d’exécuter mon programme mais j'ai une erreur du type Stackoverflow

    voila le programme, le problème c'est au niveau du deuxième sous programme en bas :

    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
    static int enleverPresent(Block<Integer> t1 , Block<Integer> t2 ){
    		int a = 0 ;
    		for(int i = 0 ; i<t2.size() ; i++){
    			int x = (Integer) t2.get(i);
    				for(int k = 0 ; k<t1.size() ; k++)
    			{
    				if((Integer)t1.get(k) == x){
     
    					int b = t1.get(k);
    					t1.set(k , t1.get(t1.size()));
    					t1.set(t1.size(), b);
    					a++;
    				}
    			}
    		}
    		return a;
     
    		}
    Y'a pas de souci avec le programme du moins je penses mais seulement quand j'essaie de l’exécuter l'erreur est signalée ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public T get(int i) {
    	if(i >=0 && i< this.size())
    		
    		return this.get(i); // la il m'indique un staroverflow
    		
    	else
    		return null;
    			
    	}

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par https://docs.oracle.com/javase/8/docs/api/java/lang/StackOverflowError.html
    public class StackOverflowError
    extends VirtualMachineError

    Thrown when a stack overflow occurs because an application recurses too deeply.
    -> Boucle infinie (mauvais tests d’arrêts) ou qui fait beaucoup beaucoup [...] beaucoup trop d’itérations (ça peut se corriger en modifiant l'allocation de la pile mais généralement c'est passer à coté d'un soucis de conception).

    Bon, ceci dit j'imagine que tu voulais faire super.get(i) au lieu de this.get(i) paske qu'avec this c'est directement la boucle infinie...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Bouye
    Merci bouye pour la reponse , en faite j'ai fais le this pour avoir directement l'element du tablea en cour pas la classe mere

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    this n'est certainement pas un tableau, puisqu'on ne peut étendre une "classe tableau", et il n'y a pas de méthode get(int) pour tableau (ni size() d'ailleurs)... dans ton code this c'est l'instance de la classe où tu définis la méthode get(), et comme tu es en train de redéfinir get() justement, et que tu passes le paramètre de la méthode directement, tu appelles la méthode get dans elle-même, donc tu auras immanquablement une stackoverflow

    Il faudrait plus de code pour comprendre ce que tu fais, en particulier de quel tableau tu parles.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 6
    Points
    6
    Par défaut voila mon code et la classe test
    code principal
    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
    public class Block<T> implements Itableau<T>
    {
    
    	private int capacite ; // capacite du tableau
    	
    	private int taille ;  //  nombre de case itulise
    	
    	private Array<T> tab ; //tableau dynamique
    	 
    // constructeur pour creer un nouveau tableau avec ses propriete
    	
    	public Block(int capacite)
    	{
    		this.capacite = capacite; 
    		tab = new Array<T>(capacite);
    		taille = 0;
    	}
    //verifie si le tableau est plein
    	
    	public boolean full() {
    		
    		return capacite == taille;
    	}
    //renvoie la taille du tableau
    	
    	public int size() {
    		
    		return taille;
    	}
    //verifie si le tableau est vide ou pas
    	
    	public boolean empty() {
    		
    		return taille == 0;
    	}
    //renvoie l'element a la position i 
    	
    	public T get(int i) {
    	if(i >=0 && i< size())
    		
    		return get(i);
    		
    	else
    		return null;
    			
    	}
    //modifier l'element a la position i
    	
    	public void set(int i, T v) {
    		if(i >=0 && i< this.size()){
    			tab.set(i, v);	
    		}
    		
    	}
    //ajouter element a la fin
    	
    	public void push_back(T v) {
    		if(this.full() == false){
    			tab.set(taille, v);
    			taille++;
    		}
    	}
    //suppression dernier element element
    	
    	public void pop_back(){
    		if(!this.empty()){
    			tab.set(taille, null);
    			taille--;
    		}
    	}
    }
    voila la classe test


    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
    public class Test {
     
     
    	public static void main(String[] args) {
     
     
     
    		Block<Integer> t1 = new Block<Integer>(3);
    		Block<Integer> t2 = new Block<Integer>(2);
     
    		t1.push_back(1);
    		t1.push_back(5);
    		t1.push_back(6);
     
     
    		t2.push_back(8);
    		t2.push_back(2);
    		t2.push_back(4);
     
    		enleverPresent(t1, t2);
     
    }
    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
    static int enleverPresent(Block<Integer> t1 , Block<Integer> t2 ){
    		int a = 0 ;
    		for(int i = 0 ; i<t2.size() ; i++){
    			int x = (Integer) t2.get(i);
    				for(int k = 0 ; k<t1.size() ; k++)
    			{
    				if((Integer)t1.get(k) == x){
    					
    					int b = t1.get(k);
    					t1.set(k , t1.get(t1.size()));
    					t1.set(t1.size(), b);
    					a++;
    				}
    			}
    		}
    		return a;
    
    		}
    }
    j'ai deux tableau , t1 et t2 qui sont du type Block<T> ,je dois enlever de t1 tout les element present dans t2 sans decaler les elemets de t1,
    mon idee etait de deplacer l'element a la derniere l'element courant present sur t2 pour pouvoir le supprimer avec la methode pop-back() , sauf que la derniere case etant occupe je dois faire un echange entre l'element courant et l'element a la derniere position (partie rouge de la methode enlever premier)
    je peux le faire avec une Arraylist ou une Linkedlist (beaucoup plus simple ) mais c'est pas le but du TP.
    je dois imperativement itulise un type Array implemente a l'ecole.
    merci si vous avez besoin de precision je suis la.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je ne vois aucun tableau dans ton code (en Java, une variable avec des []...). Et Array<T> je ne sais pas ce que c'est, ce n'est pas standard (sous-entendu, quand tu parles de classes non standard, fournis nous en le code).

    En tout cas, j'imagine que tu fais référence à l'attribut tab... donc ton code devrait à priori être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public T get(int i) {
    	if(i >=0 && i< tab.size())
     
    		return tab. quelquechose que je ne sais pas ce que c'est plus que je ne connais pas la classe Array<T> (get(i) peut-être bien)		
    	else
    		return null;
     
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Reponse consernant Array
    En fait Array est un type cree par notre professeur et on a l'obligation de l'ituliser

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mbeuks Voir le message
    En fait Array est un type cree par notre professeur et on a l'obligation de l'ituliser
    J'ai bien compris, mais ça ne me dit pas ce qu'il fait, comment il est fait, quelles sont ses méthodes, tout ça... et je n'ai pas accès à la javadoc de cettte classe, donc je ne sais pas l'utiliser... donc je ne peux te répondre qu'au mieux des conjectures...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    DE toute manière comme le dit joel.drigo tu sembles surcharger la méthode donc c'est super.get() et non pas this.get() qu'il te faut invoquer.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Reponse
    Ok je vais essayer ça alors
    Merci pour toutes les reponses

Discussions similaires

  1. [CSS] probleme de debutant
    Par discogarden dans le forum Mise en page CSS
    Réponses: 21
    Dernier message: 21/12/2005, 15h54
  2. Probleme inconnu... [debutant]
    Par The_Zarabe dans le forum C
    Réponses: 8
    Dernier message: 27/10/2005, 19h31
  3. quelques problemes de debutant avec count
    Par shirya dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/09/2005, 22h14
  4. probleme de debutant sous access
    Par guili dans le forum Access
    Réponses: 8
    Dernier message: 23/06/2005, 16h39
  5. Problème pour debuter avec glut
    Par ismael14 dans le forum GLUT
    Réponses: 2
    Dernier message: 26/07/2004, 10h37

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