我刚开始学习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
答案 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**e
或No**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()方法 。