刚开始学习Java,我怎样才能改变这一点,当我运行它时,它实际上输出了lamp1.printStates和lamp2.printStates?,它只返回它成功构建,而不返回其他任何东西。
package lamps;
public class Lamps {
public static void main(String[] args) {
class Lamp {
int on = 0;
int brightness = 0;
void changeOn(int newValue) {
on = newValue;
}
void changeBrightness(int newValue) {
brightness = newValue;
}
void printStates() {
System.out.println("On/Off:" + on +
" brightness:" + brightness);
}
}
class CreateLamps {
public void main(String[] args) {
Lamp lamp1 = new Lamp();
Lamp lamp2 = new Lamp();
lamp1.changeOn(1);
lamp1.changeBrightness(4);
lamp1.printStates();
lamp2.changeOn(1);
lamp2.changeBrightness(6);
lamp2.changeBrightness(4);
lamp2.changeOn(0);
lamp2.changeBrightness(0);
lamp2.printStates();
}
}
}
}发布于 2013-04-25 07:05:57
您的代码非常奇怪,创建一个类来“创建灯”是非常糟糕的做法,但尽管如此,让我们来看看手头的问题。
运行程序时,将执行Lamps的main方法,但不会执行CreateLamps的main方法。您需要自己调用该方法。您可以通过将new CreateLamps(args)放入Lamps的main方法中来实现这一点。
但是,我仍然强烈建议你反对你的程序的结构。
发布于 2013-04-25 07:06:00
看起来你对如何最好地组织你的类有一些基本的误解。
通常,一个类看起来像这样:
public class MyClass {
public MyClass() {
// constructor code
}
public static void main( String[] args ) {
MyClass myClass = new MyClass();
myClass.doStuff();
}
public void doStuff() {
// do stuff
}
}你所拥有的是一个内部类的混杂,这将是一个痛苦的工作,并且不是你想要开始这场冒险的方式。
发布于 2013-04-25 07:06:10
你的类和main方法都混在一起了。您需要一个类Lamp,该类中的静态main方法可以为您测试结果。可能是这样的(我并没有试图编译它)。
我还擅自将" on /off“变量更改为布尔值。
package lamps;
public class Lamp {
private boolean on = 0;
private int brightness = 0;
public void changeOn(boolean newValue) {
on = newValue;
}
public void changeBrightness(int newValue) {
brightness = newValue;
}
public void printStates() {
System.out.println("On:" + on +
" brightness:" + brightness);
}
public static void main(String[] args) {
Lamp lamp1 = new Lamp();
Lamp lamp2 = new Lamp();
lamp1.changeOn(true);
lamp1.changeBrightness(4);
lamp1.printStates();
lamp2.changeOn(true);
lamp2.changeBrightness(6);
lamp2.changeBrightness(4);
lamp2.changeOn(false);
lamp2.changeBrightness(0);
lamp2.printStates();
}
}https://stackoverflow.com/questions/16203662
复制相似问题