2

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

a) 为现实世界的对象创建一个新类(我选择了手机):mobile 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 中解决这些问题。

先感谢您!

卡拉梅勒

4

3 回答 3

4

main 方法(任何方法)应该在类内。在打包和导入之后,它应该是类。请花一些时间阅读Java Syntax

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

//Your code here
 }

}
于 2012-07-23T20:39:07.940 回答
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
}
于 2012-07-23T20:57:01.743 回答
0

在这种情况下,您甚至可能不需要 main() 方法,除非您正在编写代码来测试您的类。正如 thinksteep 所建议的,您可以在 Mobile 类中移动 main() 方法。或者,您可以将其全部删除以编译您的代码。但是,请注意,您必须在某个地方有一个 main() 方法才能运行您的程序。

于 2012-07-23T20:45:20.793 回答