Partage
  • Partager sur Facebook
  • Partager sur Twitter

(COURS JAVA)Petit PROBLEME sur mon CODE

19 septembre 2022 à 9:49:46

Bonjour à tous

j'ai essayé d'executer mon code JAVA cependant ya une cela affiche une erreur au niveau de ma fonction main que je n'arrive pas à corriger.

package BobbyFirmino;

public class BobbyFirmino {

public static void main(String[] args) {

Marque apple = new Marque("apple");

System.out.println(apple.nom);

}

class Telephone {

int pixels;

String nom;

Marque marque;

public Telephone(int pixels, String nom, Marque marque) {

this.pixels = pixels;

this.nom = nom;

this.marque = marque;

}

}

class Marque {

String nom;

public Marque(String nom) {

this.nom = nom;

}

}

}

  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2022 à 14:35:43

Bonjour,

Merci de colorer votre code à l'aide du bouton Code

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: java;">Votre code ici</pre>.

Merci de modifier votre message d'origine en fonction.

Mauvais titre

Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.

(titre originel : (COURS JAVA)Petit PROBLEME sur mon CODE)

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2022 à 18:16:37

c'est quoi le message d'erreur ? une erreur de ce type là ? error: non-static variable this cannot be referenced from a static context

si oui, le problème c'est que les classes Telephone et Marque ne sont pas statiques alors la fonction main qui appelle Marque l'est.

le plus simple est d'instancier ta classe 

public static void main(String[] args) {
   BoBobbyFirmino bf = new BobbyFirmino();
   Marque apple = bf.new Marque("apple");

   System.out.println(apple.nom);

}
  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2022 à 19:47:03

> cela affiche une erreur au niveau de ma fonction main

  • quel message d'erreur ?
  • à propos de quelle ligne exactement ?
  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2022 à 20:37:59

@umfred 

Merci beaucoup ca marche maintenant!!!

Peux-tu m'expliquer comment tu as fait pour régler le problème stp?

  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2022 à 21:29:21

@YassBena Bonsoir, merci de modifier le titre de votre sujet comme demandé, et d'insérer votre code avec l'outil d'intégration de code du forum.

La modération

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2022 à 10:47:17

en cherchant l'erreur, je suis tomber sur ce sujet https://stackoverflow.com/a/44400725 

et fait ce que te demande la modération: édite ton 1er message pour utiliser le bouton </> pour mettre en forme ton code et change ton titre.

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2022 à 10:53:19

Explication

ta classe BobbyFirmino contient

  • une méthode statique main
  • deux déclarations de classes, qui sont donc des classes internes
public class BobbyFirmino {

	public static void main(String[] args) {
            Marque apple = new Marque("apple"); // ..
	}

	class Telephone {
          // ...
	}

	class Marque {
          // ...
	}
}
  • les classes internes ne sont pas déclarées statiques. Ca veut dire que les instances de Téléphone et Marque n'existent que relativement à une instance de BobbyFirmino
  • Or la méthode main est statique. Elle ne s'exécute pas dans le contexte d'un objet BobbyFirmino
  • Donc, il est impossible de créer une instance de Marque de cette façon là.
Par contre, le code :
 BoBobbyFirmino bf = new BobbyFirmino();
 Marque apple = bf.new Marque("apple");
 
  • crée une instance bf de BobbyFirmino
  • exécute le "new Marque" dans le contexte de cet objet.
et là ça passe. Techniquement.
Mais il seste à voir si ça a un sens que Telephone et Marque soient des classes internes non-statiques de BobbyFirmino, ou si c'est simplement que tu as la flemme de mettre chaque classe dans un fichier, ou que tu as juste oublié le mot clé static devant les déclarations de sous-classes.
public class BobbyFirmino {

	public static void main(String[] args) {
            Marque apple = new Marque("apple"); // ..
	}

	static class Telephone {
          // ...
	}

	static class Marque {
          // ...
	}
}

 EDIT: élément de vocabulaire : classe interne

-
Edité par michelbillaud 20 septembre 2022 à 11:54:01

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2022 à 20:29:16

Niquel!!!

C'était donc un problème lié au fait que les autres classes ne sont pas déclarées en static.

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2022 à 20:42:12

@YassBena Bonsoir,

Je ferme ce sujet pour non respect des règles du forum et non respect d'une demande de la modération.

Merci de lire les règles du forum AVANT votre prochain sujet.

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter