Java
estelle
-
Nico -
Nico -
j'ai un probleme en JAVA. je vous explique le probleme.
c'est une erreur que quand quand je compile.
je vous transmet le type de l'erreur et le code.
graph.java étant forcément une interface de graphTab !
voici le code et les erreur:
public interface graph
{
public void ajouterArete (int NumSrc, int NumDest);
public void ajouterSommmet (int num);
public int retournerNbSommmet ();
public int retournerNbArete ();
public void afficherSommet();
public void afficherArete();
public void SupprimerSommet(int num);
public void SupprimerArete(int NumSrc, int NumDest);
public void ParcoursProf(int NumSrc);
}
____________________
abstract class graphTab implements graph
{
Sommet som[] = new Sommet[20];
boolean connexion[][] = new boolean [20][20];
int i,j, NbSommet=0, NbArete=0;
graphTab()
{
for(int i=0;i<20;i++)
{
som[i].setsommet(i);
NbSommet++;
}
marquageSommet(-1);
}
public void ajouterArete (int NumSrc, int NumDest)
{
connexion[NumSrc][NumDest]= true ;
}
public void ajouterSommmet (int num)
{
som[num] = new Sommet (num) ;
NbSommet++;
}
public int retournerNbSommmet ()
{
return NbSommet ;
}
public int retournerNbArete ()
{
for (int i=0;i<20;i++)
{
for (int j=0;j<=i;j++)
{
if (connexion[i][j] == true)
{
NbArete++;
}
}
}
return NbArete;
}
public void afficherSommet()
{
for (i=0;i<20;i++)
if (som[i].getmarque()!=-1) System.out.println(som[i]);
}
public void afficherArete()
{
for (int i=0;i<20;i++)
{
for (int j=0;j<=i;j++)
{
if (connexion[i][j] == true)
{
System.out.println("arete : "+connexion[i]+"- "+connexion[j]);
}
}
}
}
public void supprimerSommet(int num)
{
for (int i=0;i<20;i++)
{
if (connexion[num][i] == true)
{
connexion[num][i]=false;
}
}
//si le sommet existe, on remplace sa marque par -1, ce qui signifie qu'il est supprimé
som[num].setmarque(-1);
}
public void SupprimerArete(int NumSrc, int NumDest)
{
connexion[NumSrc][NumDest] = false;
}
public void parcoursProf(int NumSrc)
{
for (int j=0;j<20;j++)
{
while (connexion[NumSrc][j] == true)
{
System.out.println(som[NumSrc]+" ");
som[i].marquage (som[NumSrc],1);
parcoursProf(j);
}
}
}
public void marquageSommet(int marque)
{
for (int i=0;i<20;i++)
som[i].marquage(som[i],marque);
}
public void voisin(int num)
{
for (i=0;i<20;i++)
{
for (int j=0;j<20;j++)
{
if (connexion[num][j]== true)
{
System.out.println("le voisin de "+num+" est : "+j);
}
}
}
}
public void main(String s)
{
graphTab g = new graphTab();//(1,2,5,8,4);
g.ajouterSommet(6);
g.ajouterSommet(9);
g.ajouterArete(1,5);
g.ajouterArete(1,8);
g.ajouterArete(1,9);
g.ajouterArete(6,9);
g.ajouterArete(4,2);
g.ajouterArete(2,1);
g.voison(1);
g.AjouterSommet(7);
g.AjouterArete(10);
}
}
______________________________
import java.awt.*;
import java.applet.*;
class Sommet {
private final int blanc = 0;
private final int noir =1;
private int num;
private int marque;
Sommet (int num) {
this.num = num;
//a la création d'un sommet les sommets sont blancs
marque = 0;
}
public int retourneSommet() {
return (num);
}
public String toString() {
return ("n°"+num+"marque : "+marque);
}
public void marquage (Sommet s, int marque)
{
if (marque == 0)
{
s.marque = 1;
}
else
{
s.marque = 0;
}
}
public int getmarque()
{
return(marque);
}
public void setmarque(int marque)
{
this.marque=marque;
}
}
_____________________
voici les erreur avec le abstract:
javac graphTab.java
graphTab.java:128: class graphTab is an abstract class. It can't be
instantiated. graphTab g = new graphTab();//(1,2,5,8,4);
^
graphTab.java:129: Method ajouterSommet(int) not found in class graphTab.
g.ajouterSommet(6);
^
graphTab.java:130: Method ajouterSommet(int) not found in class graphTab.
g.ajouterSommet(9);
^
graphTab.java:138: Method voison(int) not found in class graphTab.
g.voison(1);
^
graphTab.java:139: Method AjouterSommet(int) not found in class graphTab.
g.AjouterSommet(7);
^
graphTab.java:140: Method AjouterArete(int) not found in class graphTab.
g.AjouterArete(10);
^
6 errors
et les erreur sans les abstract:
javac graphTab.java
graphTab.java:1: class graphTab must be declared abstract. It does not
define void SupprimerSommet(int) from interface graph.class graphTab implements graph
^
graphTab.java:1: class graphTab must be declared abstract. It does not
define void ParcoursProf(int) from interface graph.class graphTab implements graph
^
graphTab.java:128: class graphTab is an abstract class. It can't be
instantiated. graphTab g = new graphTab();//(1,2,5,8,4);
graph.java étant forcément une interface de graphTab !
je vous remercie....
c'est une erreur que quand quand je compile.
je vous transmet le type de l'erreur et le code.
graph.java étant forcément une interface de graphTab !
voici le code et les erreur:
public interface graph
{
public void ajouterArete (int NumSrc, int NumDest);
public void ajouterSommmet (int num);
public int retournerNbSommmet ();
public int retournerNbArete ();
public void afficherSommet();
public void afficherArete();
public void SupprimerSommet(int num);
public void SupprimerArete(int NumSrc, int NumDest);
public void ParcoursProf(int NumSrc);
}
____________________
abstract class graphTab implements graph
{
Sommet som[] = new Sommet[20];
boolean connexion[][] = new boolean [20][20];
int i,j, NbSommet=0, NbArete=0;
graphTab()
{
for(int i=0;i<20;i++)
{
som[i].setsommet(i);
NbSommet++;
}
marquageSommet(-1);
}
public void ajouterArete (int NumSrc, int NumDest)
{
connexion[NumSrc][NumDest]= true ;
}
public void ajouterSommmet (int num)
{
som[num] = new Sommet (num) ;
NbSommet++;
}
public int retournerNbSommmet ()
{
return NbSommet ;
}
public int retournerNbArete ()
{
for (int i=0;i<20;i++)
{
for (int j=0;j<=i;j++)
{
if (connexion[i][j] == true)
{
NbArete++;
}
}
}
return NbArete;
}
public void afficherSommet()
{
for (i=0;i<20;i++)
if (som[i].getmarque()!=-1) System.out.println(som[i]);
}
public void afficherArete()
{
for (int i=0;i<20;i++)
{
for (int j=0;j<=i;j++)
{
if (connexion[i][j] == true)
{
System.out.println("arete : "+connexion[i]+"- "+connexion[j]);
}
}
}
}
public void supprimerSommet(int num)
{
for (int i=0;i<20;i++)
{
if (connexion[num][i] == true)
{
connexion[num][i]=false;
}
}
//si le sommet existe, on remplace sa marque par -1, ce qui signifie qu'il est supprimé
som[num].setmarque(-1);
}
public void SupprimerArete(int NumSrc, int NumDest)
{
connexion[NumSrc][NumDest] = false;
}
public void parcoursProf(int NumSrc)
{
for (int j=0;j<20;j++)
{
while (connexion[NumSrc][j] == true)
{
System.out.println(som[NumSrc]+" ");
som[i].marquage (som[NumSrc],1);
parcoursProf(j);
}
}
}
public void marquageSommet(int marque)
{
for (int i=0;i<20;i++)
som[i].marquage(som[i],marque);
}
public void voisin(int num)
{
for (i=0;i<20;i++)
{
for (int j=0;j<20;j++)
{
if (connexion[num][j]== true)
{
System.out.println("le voisin de "+num+" est : "+j);
}
}
}
}
public void main(String s)
{
graphTab g = new graphTab();//(1,2,5,8,4);
g.ajouterSommet(6);
g.ajouterSommet(9);
g.ajouterArete(1,5);
g.ajouterArete(1,8);
g.ajouterArete(1,9);
g.ajouterArete(6,9);
g.ajouterArete(4,2);
g.ajouterArete(2,1);
g.voison(1);
g.AjouterSommet(7);
g.AjouterArete(10);
}
}
______________________________
import java.awt.*;
import java.applet.*;
class Sommet {
private final int blanc = 0;
private final int noir =1;
private int num;
private int marque;
Sommet (int num) {
this.num = num;
//a la création d'un sommet les sommets sont blancs
marque = 0;
}
public int retourneSommet() {
return (num);
}
public String toString() {
return ("n°"+num+"marque : "+marque);
}
public void marquage (Sommet s, int marque)
{
if (marque == 0)
{
s.marque = 1;
}
else
{
s.marque = 0;
}
}
public int getmarque()
{
return(marque);
}
public void setmarque(int marque)
{
this.marque=marque;
}
}
_____________________
voici les erreur avec le abstract:
javac graphTab.java
graphTab.java:128: class graphTab is an abstract class. It can't be
instantiated. graphTab g = new graphTab();//(1,2,5,8,4);
^
graphTab.java:129: Method ajouterSommet(int) not found in class graphTab.
g.ajouterSommet(6);
^
graphTab.java:130: Method ajouterSommet(int) not found in class graphTab.
g.ajouterSommet(9);
^
graphTab.java:138: Method voison(int) not found in class graphTab.
g.voison(1);
^
graphTab.java:139: Method AjouterSommet(int) not found in class graphTab.
g.AjouterSommet(7);
^
graphTab.java:140: Method AjouterArete(int) not found in class graphTab.
g.AjouterArete(10);
^
6 errors
et les erreur sans les abstract:
javac graphTab.java
graphTab.java:1: class graphTab must be declared abstract. It does not
define void SupprimerSommet(int) from interface graph.class graphTab implements graph
^
graphTab.java:1: class graphTab must be declared abstract. It does not
define void ParcoursProf(int) from interface graph.class graphTab implements graph
^
graphTab.java:128: class graphTab is an abstract class. It can't be
instantiated. graphTab g = new graphTab();//(1,2,5,8,4);
graph.java étant forcément une interface de graphTab !
je vous remercie....
A voir également:
- Java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
9 réponses
en effet, j'ai compiler ton prog sur unix et je constate les meme erreur, mais je ne vois pas de solution. il est vrai que ca vien au niveau de l'abstract.
je ne vois pas quoi te dire d'autre.... le java n'est pas de mon domaine de predilection.
surement que quelqu'un dautre de plus calé va surement trouver une solution.
je ne vois pas quoi te dire d'autre.... le java n'est pas de mon domaine de predilection.
surement que quelqu'un dautre de plus calé va surement trouver une solution.
Tu as dis à Java que graphTab implémente graph, et Java te dit que tu as oublié d'implémenter les méthodes SupprimerSommet(int) et ParcoursProf(int) de l'interface graph.
De plus, comme tu as déclaré ta classe graphTab comme abstract, tu n'a pas le droit de l'instancier.
On instantice pas les classes abstraites. On peut seulement les dériver.
Donc:
- dans graphTab, implémente toutes les méthodes de l'interface graph (même si tu ne met rien dedans).
- ensuite, soit tu dérive une nouvelle classe (non abstraite) de graphTab, soit tu ne déclare pas graphTab comme abstraite.
De plus, comme tu as déclaré ta classe graphTab comme abstract, tu n'a pas le droit de l'instancier.
On instantice pas les classes abstraites. On peut seulement les dériver.
Donc:
- dans graphTab, implémente toutes les méthodes de l'interface graph (même si tu ne met rien dedans).
- ensuite, soit tu dérive une nouvelle classe (non abstraite) de graphTab, soit tu ne déclare pas graphTab comme abstraite.
PS: Java est sensible à la casse des caractères.
Effectivement: tu n'a pas implémenté SupprimerSommet(int), mais supprimerSommet(int).
Pour Java, SupprimerSommet et supprimerSommet sont des méthodes différentes.
Fais bien attention à la casse des caractères.
Effectivement: tu n'a pas implémenté SupprimerSommet(int), mais supprimerSommet(int).
Pour Java, SupprimerSommet et supprimerSommet sont des méthodes différentes.
Fais bien attention à la casse des caractères.
Bonjour a tous,
Merci tout d'abord de vos réponses.
Le problème est que si je ne met pas la class graphTab en abstract, il me le demande.
Si je la met comme il me le demande en abstract, je ne peux pas l'instancié (comme vous me le dites).
Que dois je faire pour que je puisse créer un objet provenant de la classe graphTab.
La je suis bloquée, je peux pas tester (en créer des objets, manipulant mes objets avec mes méthodes etc..).
Merci de vos réponses, j'en ai vraiment besoin !
Merci tout d'abord de vos réponses.
Le problème est que si je ne met pas la class graphTab en abstract, il me le demande.
Si je la met comme il me le demande en abstract, je ne peux pas l'instancié (comme vous me le dites).
Que dois je faire pour que je puisse créer un objet provenant de la classe graphTab.
La je suis bloquée, je peux pas tester (en créer des objets, manipulant mes objets avec mes méthodes etc..).
Merci de vos réponses, j'en ai vraiment besoin !
Bonjour a tous,
Merci tout d'abord de vos réponses.
Le problème est que si je ne met pas la class graphTab en abstract, il me le demande.
Si je la met comme il me le demande en abstract, je ne peux pas l'instancié (comme vous me le dites).
Que dois je faire pour que je puisse créer un objet provenant de la classe graphTab.
La je suis bloquée, je peux pas tester (en créer des objets, manipulant mes objets avec mes méthodes etc..).
Merci de vos réponses, j'en ai vraiment besoin !
Merci tout d'abord de vos réponses.
Le problème est que si je ne met pas la class graphTab en abstract, il me le demande.
Si je la met comme il me le demande en abstract, je ne peux pas l'instancié (comme vous me le dites).
Que dois je faire pour que je puisse créer un objet provenant de la classe graphTab.
La je suis bloquée, je peux pas tester (en créer des objets, manipulant mes objets avec mes méthodes etc..).
Merci de vos réponses, j'en ai vraiment besoin !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Relisez ma réponse.
Vous n'avez pas besoin de déclarer graphTab en abstract.
D'ailleurs si vous voulez instancier un objet de type graphTab, vous ne devez pas déclarer la classe comme abstraite.
(Comme son nom l'indique, une classe abstraite est abstraite et ne peut pas être instanciée sous forme d'un objet concret.)
Vous devez implémenter toutes les méthodes de l'interface dont vous héritez, et retirer le mot-clé abstract de la déclaration de graphTab.
Le compilateur Java devrait alors cesser de se plaindre de l'absence d'implémentation de certaines méthodes de l'interface.
Vous n'avez pas besoin de déclarer graphTab en abstract.
D'ailleurs si vous voulez instancier un objet de type graphTab, vous ne devez pas déclarer la classe comme abstraite.
(Comme son nom l'indique, une classe abstraite est abstraite et ne peut pas être instanciée sous forme d'un objet concret.)
Vous devez implémenter toutes les méthodes de l'interface dont vous héritez, et retirer le mot-clé abstract de la déclaration de graphTab.
Le compilateur Java devrait alors cesser de se plaindre de l'absence d'implémentation de certaines méthodes de l'interface.
Yop,
il est clair que tu t'emmèles pas mal les pinceaux avec les orthographes des mots (attention aux majuscules et minuscules).
Implémente la méthode setSommet de la classe Sommet. Elle est manquante. En débuggant tout ca, je n'ai plus que cette erreur. Voila le résultat :
il est clair que tu t'emmèles pas mal les pinceaux avec les orthographes des mots (attention aux majuscules et minuscules).
Implémente la méthode setSommet de la classe Sommet. Elle est manquante. En débuggant tout ca, je n'ai plus que cette erreur. Voila le résultat :
public class GraphTab implements Graph {
Sommet som[] = new Sommet[20];
boolean connexion[][] = new boolean [20][20];
int i,j, NbSommet=0, NbArete=0;
GraphTab() {
for(int i=0;i<20;i++) {
som[i].setsommet(i); /* méthode non implémentée */
NbSommet++;
}
marquageSommet(-1);
}
public void ajouterArete (int NumSrc, int NumDest) {
connexion[NumSrc][NumDest]= true ;
}
public void ajouterSommet (int num) {
som[num] = new Sommet (num) ;
NbSommet++;
}
public int retournerNbSommet () {
return NbSommet ;
}
public int retournerNbArete () {
for (int i=0;i<20;i++) {
for (int j=0;j<=i;j++) {
if (connexion[i][j] == true) {
NbArete++;
}
}
}
return NbArete;
}
public void afficherSommet() {
for (i=0;i<20;i++)
if (som[i].getmarque()!=-1)
System.out.println(som[i]);
}
public void afficherArete() {
for (int i=0;i<20;i++) {
for (int j=0;j<=i;j++) {
if (connexion[i][j] == true) {
System.out.println("arete : "+connexion[i]+"- "+connexion[j]);
}
}
}
}
public void supprimerSommet(int num) {
for (int i=0;i<20;i++) {
if (connexion[num][i] == true) {
connexion[num][i]=false;
}
}
//si le sommet existe, on remplace sa marque par -1, ce qui signifie qu'il est supprimé
som[num].setmarque(-1);
}
public void supprimerArete(int NumSrc, int NumDest) {
connexion[NumSrc][NumDest] = false;
}
public void parcoursProf(int NumSrc) {
for (int j=0;j<20;j++) {
while (connexion[NumSrc][j] == true) {
System.out.println(som[NumSrc]+" ");
som[i].marquage (som[NumSrc],1);
parcoursProf(j);
}
}
}
public void marquageSommet(int marque) {
for (int i=0;i<20;i++)
som[i].marquage(som[i],marque);
}
public void voisin(int num) {
for (i=0;i<20;i++) {
for (int j=0;j<20;j++) {
if (connexion[num][j]== true) {
System.out.println("le voisin de "+num+" est : "+j);
}
}
}
}
public static void main(String [] s) {
GraphTab g = new GraphTab();//(1,2,5,8,4);
g.ajouterSommet(6);
g.ajouterSommet(9);
g.ajouterArete(1,5);
g.ajouterArete(1,8);
g.ajouterArete(1,9);
g.ajouterArete(6,9);
g.ajouterArete(4,2);
g.ajouterArete(2,1);
g.voisin(1);
g.ajouterSommet(7);
}
}
-------------------------------------------------------------
public interface Graph {
public void ajouterArete (int NumSrc, int NumDest);
public void ajouterSommet (int num);
public int retournerNbSommet ();
public int retournerNbArete ();
public void afficherSommet();
public void afficherArete();
public void supprimerSommet(int num);
public void supprimerArete(int NumSrc, int NumDest);
public void parcoursProf(int NumSrc);
}
---------------------------------
import java.awt.*;
import java.applet.*;
class Sommet {
private final int blanc = 0;
private final int noir =1;
private int num;
private int marque;
Sommet (int num) {
this.num = num;
//a la création d'un sommet les sommets sont blancs
marque = 0;
}
public int retourneSommet() {
return (num);
}
public String toString() {
return ("n°"+num+"marque : "+marque);
}
public void setSommet(int i) {
}
public void marquage (Sommet s, int marque) {
if (marque == 0) {
s.marque = 1;
}
else {
s.marque = 0;
}
}
public int getmarque() {
return(marque);
}
public void setmarque(int marque) {
this.marque=marque;
}
}
Voila j'espère que ca t'aidera.
++
Nico
Sommet som[] = new Sommet[20];
boolean connexion[][] = new boolean [20][20];
int i,j, NbSommet=0, NbArete=0;
GraphTab() {
for(int i=0;i<20;i++) {
som[i].setsommet(i); /* méthode non implémentée */
NbSommet++;
}
marquageSommet(-1);
}
public void ajouterArete (int NumSrc, int NumDest) {
connexion[NumSrc][NumDest]= true ;
}
public void ajouterSommet (int num) {
som[num] = new Sommet (num) ;
NbSommet++;
}
public int retournerNbSommet () {
return NbSommet ;
}
public int retournerNbArete () {
for (int i=0;i<20;i++) {
for (int j=0;j<=i;j++) {
if (connexion[i][j] == true) {
NbArete++;
}
}
}
return NbArete;
}
public void afficherSommet() {
for (i=0;i<20;i++)
if (som[i].getmarque()!=-1)
System.out.println(som[i]);
}
public void afficherArete() {
for (int i=0;i<20;i++) {
for (int j=0;j<=i;j++) {
if (connexion[i][j] == true) {
System.out.println("arete : "+connexion[i]+"- "+connexion[j]);
}
}
}
}
public void supprimerSommet(int num) {
for (int i=0;i<20;i++) {
if (connexion[num][i] == true) {
connexion[num][i]=false;
}
}
//si le sommet existe, on remplace sa marque par -1, ce qui signifie qu'il est supprimé
som[num].setmarque(-1);
}
public void supprimerArete(int NumSrc, int NumDest) {
connexion[NumSrc][NumDest] = false;
}
public void parcoursProf(int NumSrc) {
for (int j=0;j<20;j++) {
while (connexion[NumSrc][j] == true) {
System.out.println(som[NumSrc]+" ");
som[i].marquage (som[NumSrc],1);
parcoursProf(j);
}
}
}
public void marquageSommet(int marque) {
for (int i=0;i<20;i++)
som[i].marquage(som[i],marque);
}
public void voisin(int num) {
for (i=0;i<20;i++) {
for (int j=0;j<20;j++) {
if (connexion[num][j]== true) {
System.out.println("le voisin de "+num+" est : "+j);
}
}
}
}
public static void main(String [] s) {
GraphTab g = new GraphTab();//(1,2,5,8,4);
g.ajouterSommet(6);
g.ajouterSommet(9);
g.ajouterArete(1,5);
g.ajouterArete(1,8);
g.ajouterArete(1,9);
g.ajouterArete(6,9);
g.ajouterArete(4,2);
g.ajouterArete(2,1);
g.voisin(1);
g.ajouterSommet(7);
}
}
-------------------------------------------------------------
public interface Graph {
public void ajouterArete (int NumSrc, int NumDest);
public void ajouterSommet (int num);
public int retournerNbSommet ();
public int retournerNbArete ();
public void afficherSommet();
public void afficherArete();
public void supprimerSommet(int num);
public void supprimerArete(int NumSrc, int NumDest);
public void parcoursProf(int NumSrc);
}
---------------------------------
import java.awt.*;
import java.applet.*;
class Sommet {
private final int blanc = 0;
private final int noir =1;
private int num;
private int marque;
Sommet (int num) {
this.num = num;
//a la création d'un sommet les sommets sont blancs
marque = 0;
}
public int retourneSommet() {
return (num);
}
public String toString() {
return ("n°"+num+"marque : "+marque);
}
public void setSommet(int i) {
}
public void marquage (Sommet s, int marque) {
if (marque == 0) {
s.marque = 1;
}
else {
s.marque = 0;
}
}
public int getmarque() {
return(marque);
}
public void setmarque(int marque) {
this.marque=marque;
}
}
Voila j'espère que ca t'aidera.
++
Nico
Tiens voila une correction pour ta fonction manquante. Tu n'as qu'à changer :
GraphTab() {
for(int i=0;i<20;i++) {
som[i] = new Sommet(i);
NbSommet++;
}
marquageSommet(-1);
}
Et la ca fonctionne. Bon par contre ta méthode de voisinage fait trop de boucle. Il faudrait que tu rajoutes une variable qui compte le nombre de voisin qu'elle a. Cela t'évitera de faire trop de boucles.
++
Nico
GraphTab() {
for(int i=0;i<20;i++) {
som[i] = new Sommet(i);
NbSommet++;
}
marquageSommet(-1);
}
Et la ca fonctionne. Bon par contre ta méthode de voisinage fait trop de boucle. Il faudrait que tu rajoutes une variable qui compte le nombre de voisin qu'elle a. Cela t'évitera de faire trop de boucles.
++
Nico