首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初学者Java Q

初学者Java Q
EN

Stack Overflow用户
提问于 2013-04-25 07:00:31
回答 5查看 178关注 0票数 0

刚开始学习Java,我怎样才能改变这一点,当我运行它时,它实际上输出了lamp1.printStateslamp2.printStates?,它只返回它成功构建,而不返回其他任何东西。

代码语言:javascript
复制
 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();
    }


   }
  }
 }
EN

回答 5

Stack Overflow用户

发布于 2013-04-25 07:05:57

您的代码非常奇怪,创建一个类来“创建灯”是非常糟糕的做法,但尽管如此,让我们来看看手头的问题。

运行程序时,将执行Lampsmain方法,但不会执行CreateLampsmain方法。您需要自己调用该方法。您可以通过将new CreateLamps(args)放入Lampsmain方法中来实现这一点。

但是,我仍然强烈建议你反对你的程序的结构。

票数 1
EN

Stack Overflow用户

发布于 2013-04-25 07:06:00

看起来你对如何最好地组织你的类有一些基本的误解。

通常,一个类看起来像这样:

代码语言:javascript
复制
public class MyClass {
    public MyClass() {
        // constructor code
    }

    public static void main( String[] args ) {
        MyClass myClass = new MyClass();
        myClass.doStuff();
    }

    public void doStuff() {
        // do stuff
    }
}

你所拥有的是一个内部类的混杂,这将是一个痛苦的工作,并且不是你想要开始这场冒险的方式。

票数 0
EN

Stack Overflow用户

发布于 2013-04-25 07:06:10

你的类和main方法都混在一起了。您需要一个类Lamp,该类中的静态main方法可以为您测试结果。可能是这样的(我并没有试图编译它)。

我还擅自将" on /off“变量更改为布尔值。

代码语言:javascript
复制
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();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16203662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档