Pb JAVA : REPONSE !!!
Fermé
zebiloute
Messages postés
105
Date d'inscription
mardi 15 janvier 2002
Statut
Membre
Dernière intervention
14 avril 2005
-
26 févr. 2002 à 11:00
wafacom - 21 juil. 2008 à 12:35
wafacom - 21 juil. 2008 à 12:35
A voir également:
- Pb JAVA : REPONSE !!!
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Jeux java itel touche - Forum Mobile
13 réponses
penellope
Messages postés
73
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
7 mars 2004
1
1 août 2003 à 08:06
1 août 2003 à 08:06
Je voudrais utiliser la methode removeRange de la classe Vector en java mais le compilateur me dit que la methode removeRange est invisible (surement car elle est protected )
Mais comment faire pour la rendre visible
Mais comment faire pour la rendre visible
Oui j ai consulté le source de la classe Vector la méthode est effectivement protected.
Je ne sais pas pq?
Sinon voici le code source de cette méthode (copier/coller)
protected void removeRange(int fromIndex, int toIndex) {
modCount++;
int numMoved = elementCount - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
// Let gc do its work
int newElementCount = elementCount - (toIndex-fromIndex);
while (elementCount != newElementCount)
elementData[--elementCount] = null;
}
Je ne sais pas pq?
Sinon voici le code source de cette méthode (copier/coller)
protected void removeRange(int fromIndex, int toIndex) {
modCount++;
int numMoved = elementCount - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
// Let gc do its work
int newElementCount = elementCount - (toIndex-fromIndex);
while (elementCount != newElementCount)
elementData[--elementCount] = null;
}
penellope
Messages postés
73
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
7 mars 2004
1
1 août 2003 à 08:49
1 août 2003 à 08:49
Tu ne saurais pas par hasard comment je peux l'utiliser? Moi j'ai taper le code suivant
Elements etant le tableau que je traite
Peut etre faudrait il que je tape moi meme dans mon code celui que tu viens de me donner ?
Elements.removeRange(0,x-1);
Elements etant le tableau que je traite
Peut etre faudrait il que je tape moi meme dans mon code celui que tu viens de me donner ?
Salut penellope, pour faire plus simple poste ici ton code complet qui pose pb et J essayerai de le corriger et le reposterai ici.
A+
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
penellope
Messages postés
73
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
7 mars 2004
1
1 août 2003 à 11:10
1 août 2003 à 11:10
Ok je te joins mon code
Je t'ai mis en gras la partie concernant la methode removeRange
Merci d'avance
Je t'ai mis en gras la partie concernant la methode removeRange
Merci d'avance
import java.io.*; import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import java.util.Vector; public class Echo extends DefaultHandler { StringBuffer textBuffer; private Vector Elements = new Vector(); private Vector Levels = new Vector(); private int levelPrec; int compt = 0; private int indentLevel = 0; int x=1; public static void main(String argv[]) { if (argv.length != 0) { System.err.println("Usage: cmd filename"); System.exit(1); } // Use an instance of ourselves as the SAX event handler DefaultHandler handler = new Echo(); // Use the default (non-validating) parser SAXParserFactory factory = SAXParserFactory.newInstance(); try { // Set up output stream out = new OutputStreamWriter(System.out, "UTF8"); // Parse the input SAXParser saxParser = factory.newSAXParser(); saxParser.parse("name.xsd", handler ); } catch (Throwable t) { t.printStackTrace(); } System.exit(0); } static private Writer out; private String indentString = " "; // Amount to indent //private int indentLevel = 0; private void emit(String s) throws SAXException { try { out.write(s); out.flush(); } catch (IOException e) { throw new SAXException("I/O error", e); } } private void nl()throws SAXException { String lineEnd = System.getProperty("line.separator"); try { out.write(lineEnd); for (int i=0; i < indentLevel; i++) out.write(indentString); } catch (IOException e) { throw new SAXException("I/O error", e); } } public void startDocument() throws SAXException { nl(); nl(); emit("\t\tDebut du document"); nl(); emit("<?xml version='1.0' encoding='UTF-8'?>"); } public void endDocument() throws SAXException { nl(); emit("\t\tfin du document"); System.out.println("\n"); //analyse(); try { nl(); out.flush(); } catch (IOException e) { throw new SAXException("I/O error", e); } } public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException { //indentLevel++; nl(); int level; emit("ELEMENT: "); String eName = sName; // element name if ("".equals(eName)) eName = qName; // not namespaceAware emit("<"+eName); if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String aName = attrs.getLocalName(i); // Attr name if ("".equals(aName)) aName = attrs.getQName(i); if (qName.equals("xs:element")|qName.equals("xsd:element")) { if (aName.equals("name")|aName.equals("ref")){ nl(); //indentLevel++; emit(" ATTR: "); emit(aName); emit("\t\""); emit(attrs.getValue(i)); if(compt == 0) { SOP("\n==0"); saveLevel(indentLevel); saveElement(attrs.getValue(i)); writeToFile(attrs.getValue(i),"entete\n"); } if(compt >0) { saveLevel(indentLevel); saveElement(attrs.getValue(i)); writeToFile(attrs.getValue(i),"entete\n"); SOP("\n>0"); if(levelPrec==indentLevel-1) { Elements.removeRange(0,x-1); SOP("levelPrec==indentLevel-1"); SOP("--------------------------dans "+Elements.get(levelPrec)+" va s'ecrire "+Elements.get(indentLevel)); writeToFile(Elements.get(levelPrec),Elements.get(indentLevel)+"\n"); SOP("indent:"+indentLevel+" prec:"+levelPrec); x=1; } if(levelPrec == indentLevel) { SOP("levelPrec==indentLevel"); SOP("--------------------------dans "+Elements.get(levelPrec-1)+" va s'ecrire "+Elements.get(indentLevel+x)); writeToFile(Elements.get(levelPrec-1),Elements.get(indentLevel+x)+"\n"); SOP("indent:"+indentLevel+" prec:"+levelPrec); x++; SOP("x: "+x); } } emit("\""+" indent: "+indentLevel); levelPrec=indentLevel; indentLevel++; compt++; } } } } if (attrs.getLength() > 0) nl(); emit(">"); } public void endElement(String namespaceURI, String sName, // simple name String qName // qualified name ) throws SAXException { String eName=sName; nl(); emit("Fin element: "); emit("<"+eName+">"); if (qName.equals("xs:element")|qName.equals("xsd:element")) { indentLevel--; levelPrec=indentLevel; } } private void echoText() throws SAXException { nl(); emit("CHARS: "); String s = ""+textBuffer; if (!s.trim().equals("")) emit(s); } /*Cette methode permet de creer un fichier .xsl(feuille de style ) d'ecrire a l'interieur toute les données necessaires a son utilisation*/ public void writeToFile(Object fileName,Object txt) //write into the correct file { try { FileWriter fw = new FileWriter(fileName+".xsl",true); BufferedWriter bw = new BufferedWriter(fw); bw.write(""+txt); bw.close(); } catch (IOException e){ System.out.println("exception"+e); } } public void saveElement(String elementSave){ Elements.addElement(new String(elementSave)); } public void saveLevel(int elementSave){ Levels.addElement(new Integer(elementSave)); } public void SOP(String s) { System.out.println(s); } public Vector getElements() { return Elements; } public Vector getLevels() { return Levels; } public int getLevelPrec() { return levelPrec; } }
choubaka
Messages postés
39407
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
9 décembre 2024
2 104
1 août 2003 à 12:27
1 août 2003 à 12:27
une petite définition de protected??
protected : méthodes, variables (protected n’est pas autorisé pour les classes) déclarées « protected » ne sont accessibles que par les méthodes de la classe et des sous-classe du package de l’objet de défintion.
Chouba
Casque Bleu forumique
protected : méthodes, variables (protected n’est pas autorisé pour les classes) déclarées « protected » ne sont accessibles que par les méthodes de la classe et des sous-classe du package de l’objet de défintion.
Chouba
Casque Bleu forumique
choubaka
Messages postés
39407
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
9 décembre 2024
2 104
1 août 2003 à 12:34
1 août 2003 à 12:34
ce qui signifie en fait que cette méthode est utilisée par les autres méthodes de la classe vector et quelle ne peut pas être appelée autrement. Ceci dit tu peux étendre la classe Vector et l'utiliser à ce moment là dans tes méthodes de la sous classe.
Chouba
Casque Bleu forumique
Chouba
Casque Bleu forumique
Si ell est protected si qu il ya une raison donc on evite le bidouillage.
Et bien tu n as qu a simuler la méthode
Elements.removeRange(0,x-1);
par ceci
//efface depusi deb inclus jusqu à ex exclus
public void removeRange(int deb, int ex)
{
for(int j=deb; j<ex; j++) Elements.removeElementAt(i);
}
Je l ai pass essayé mais je pense que c bon nan?
A+
Et bien tu n as qu a simuler la méthode
Elements.removeRange(0,x-1);
par ceci
//efface depusi deb inclus jusqu à ex exclus
public void removeRange(int deb, int ex)
{
for(int j=deb; j<ex; j++) Elements.removeElementAt(i);
}
Je l ai pass essayé mais je pense que c bon nan?
A+
choubaka
Messages postés
39407
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
9 décembre 2024
2 104
1 août 2003 à 13:33
1 août 2003 à 13:33
une autre solution est de créer un classe MonVecteur avec une methode publique XXX et qui étends vector
Chouba
Casque Bleu forumique
public class MonVecteur extends Vector{ public void nomDeMethode(int x, int y){ super.removeRange(x,y); } }
Chouba
Casque Bleu forumique
j y ai pensé choubaka mais ca me pose 2 question:s
-si elle est protected c pas pour rien don cfaire un extended c un peu bidouiller
-chui meme pas sur que le extende marche car lui appele une méthode protected.. on revient au départ!!
-si elle est protected c pas pour rien don cfaire un extended c un peu bidouiller
-chui meme pas sur que le extende marche car lui appele une méthode protected.. on revient au départ!!
choubaka
Messages postés
39407
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
9 décembre 2024
2 104
1 août 2003 à 14:40
1 août 2003 à 14:40
on ne peut pas appeler ça du bidouillage...
vu que protected peut être utilisé par la sous-classe, donc...
ça reste en interne, l'objet faisant appel à
ne sait pas qu'il utilise une méthode protected, pas de prob
Chouba
Casque Bleu forumique
vu que protected peut être utilisé par la sous-classe, donc...
ça reste en interne, l'objet faisant appel à
public void nomDeMethode(int x, int y){
ne sait pas qu'il utilise une méthode protected, pas de prob
Chouba
Casque Bleu forumique
penellope
Messages postés
73
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
7 mars 2004
1
4 août 2003 à 08:24
4 août 2003 à 08:24
Merci pour vos solutions
J'avais deja essayer ta solution choubaka mais comme le disais Omar ca ne marche pas car meme si la methode protected est utilisable dans les sous classe a pparement mon programme ne la voie pas (je ne comprend pad pourqu'oi mais bon...)
Finalement j'ai simuler le fonctionnement de la methode removeRange et ca marche parfaitement bien
Encore merci beaucoup pour votre aide
Penellope
J'avais deja essayer ta solution choubaka mais comme le disais Omar ca ne marche pas car meme si la methode protected est utilisable dans les sous classe a pparement mon programme ne la voie pas (je ne comprend pad pourqu'oi mais bon...)
Finalement j'ai simuler le fonctionnement de la methode removeRange et ca marche parfaitement bien
Encore merci beaucoup pour votre aide
Penellope