2 votes

Je suis novice en Java et je ne parviens pas à corriger l'erreur : Classe, Interface ou Enum attendue. 274062

Je viens de commencer mes cours de java et dans le cadre de mon premier exercice, on m'a demandé de.. :

a) Créez une nouvelle classe pour un objet du monde réel (j'ai choisi le téléphone portable) : mobile b) Pour cette classe, créez une interface qui définit son comportement, puis demandez à votre classe de l'implémenter.

J'ai utilisé Netbeans pour cet exercice et voici le code que j'ai écrit/étendu :

    package mobile;

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {

public class Mobile {
    int volume = 0;
    int ringtone = 0;

void volumeUp (int increment){
    volume = volume + increment;
}
void changeringtone (int newValue){
    ringtone = newValue;
}
void volumeDown (int decrement){
    volume = volume - decrement;
}
void printStates(){
    System.out.println("ringtone:" + ringtone + "volume:" + volume);
}

}

Cependant, lorsque je l'exécute, j'obtiens ce message d'erreur :

java.lang.NoClassDefFoundError: mobile/Mobile (wrong name: mobile/mobile)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Impossible de trouver la classe principale : mobile.Mobile. Le programme va se terminer.

Je demande à ce que quelqu'un puisse, tout d'abord, m'indiquer les erreurs dans mon code et, ensuite, comment je peux résoudre ces problèmes dans Netbeans.

Merci d'avance !

karramelle

4voto

Nambari Points 42066

La méthode principale (n'importe quelle méthode) doit être à l'intérieur de la classe. Juste après package & imports, ce devrait être class. Veuillez prendre le temps de lire Syntaxe Java .

    public class Mobile {
    //Variables declarations 
    //Instance blocks etc.,
     public static void main(String[] args) {

//Your code here
 }

}

2voto

Andreas_D Points 64111

Outre le problème lié au langage Java (les méthodes résident dans le corps des classes), j'aimerais vous encourager à modifier l'option architecture de votre petite application.

On vous demande d'écrire d'abord une interface et ensuite une implémentation de cette interface. Vous avez choisi un téléphone portable, pas mal, mais ensuite votre Mobile devrait être l'interface et une autre classe ( IPh**e o No**a ) devrait fournir l'implémentation réelle de cette interface.

Et puis j'utiliserais une troisième classe pour la méthode principale. Je la nommerais User - qui serait la classe qui appelle la méthode sur une instance d'une implémentation de Mobile .

Donc en bref :

public class Me {
  public static void main(String[] args) {
    Mobile myPhone = new Nokia();  // we "buy" a mobile
    myPhone.setVolume(11);         // that's more then 10 ;)
  }
}

public interface Mobile {
  void setVolume(int level);  // as an example
}

public class Nokia implements Mobile {
  // (1) a constructor
  // (2) implementations for all methods defined on Mobile
}

0voto

Code-Apprentice Points 18086

Dans ce cas, vous n'avez peut-être même pas besoin de la méthode main(), à moins que vous n'écriviez du code pour tester votre classe. Comme thinksteep l'a suggéré, vous pouvez déplacer la méthode main() à l'intérieur de votre classe Mobile. Vous pouvez aussi la supprimer complètement afin de compiler votre code. Cependant, notez que vous devez avoir une méthode main() quelque part afin d'exécuter votre programme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X