Java新手似乎无法解决错误;预期的类,接口或枚举。 274062

时间:2012-07-23 20:38:37

标签: java netbeans

我刚开始学习java教程,作为第一次练习的一部分,我被要求:

a)为现实世界的对象(我选择手机)创建一个新类:移动 b)对于这个类,创建一个定义其行为的接口,然后要求您的类实现它。

我使用Netbeans进行此练习,这是我编写/扩展的代码:

    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);
}

}

然而,当我运行它时,我收到此错误消息:

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)

无法找到主类:mobile.Mobile。程序将退出。

我很恳请有人可以取悦,首先,向我指出我的代码中的错误,其次,我如何解决Netbeans中的这些问题。

提前谢谢!

karramelle

3 个答案:

答案 0 :(得分:4)

main方法(任何方法)都应该在class里面。包装后&进口,应该是类。请花一些时间阅读Java Syntax

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

//Your code here
 }

}

答案 1 :(得分:2)

除了java语言问题(方法驻留在类体内)之外,我还是鼓励您更改小应用程序的体系结构

首先要求您编写一个接口,然后再编写该接口的实现。您选择了手机,不错,但是您的Mobile应该是界面,而另一个类(IPh**eNo**a)应该提供该界面的真实实现。

然后我会使用第三个类作为main方法。将其命名为User - 这将是在Mobile的实现的实例上调用方法的类。

简而言之:

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
}

答案 2 :(得分:0)

在这种情况下,您可能甚至不需要main()方法,除非您编写代码来测试您的类。正如thinksteep建议的那样,您可以在Mobile类中移动main()方法。或者,您可以将它们全部删除以编译代码。但是,请注意,为了运行程序,您必须在某处使用main()方法