学习构造函数-无输出

时间:2018-09-09 02:29:03

标签: java eclipse static printf println

我是新手,正在学习方法和构造函数。问题如下

  
      
  1. 在Eclipse中运行以下程序时,系统提示我可以将main方法声明为静态方法。
  2.   
public class Mouse 
      {

        double version;

        String model;

        Mouse(double v, String m)
        {
            version = v;
            model = m;
        }

        void display()
        {
            System.out.printf("Version is ", +version);

            System.out.printf("Model is ",model);
        }

      }
     class DemoMouse
     {

          public static void main(String[] args) {
        {
            Mouse m = new Mouse(5.1, "Logitech");
            m.display();
            }
     }
  
      
  1. 当我被迫从main移除static并将DemoMouse设置为static时,我没有得到完整的输出。我得出的是Version is Model   是。我希望输出为
  2.   
*Version is 2.4 
Model is Logitech*

    package test;

    public class Mouse
     {
        double version;

        String model;

        Mouse(double v, String m)
        {
            version = v;
            model = m;
        }

        void display()
        {
            System.out.printf("Version is ", +version);

            System.out.printf("Model is ",model);
        }
  }

    static class DemoMouse
    {

        public void main(String[] args) {
            {
                Mouse m = new Mouse(5.1, "Logitech");
                m.display();
        }
}

2 个答案:

答案 0 :(得分:0)

1。 您需要将主方法声明为静态。这样做的原因是,您需要一个类的实例才能使用非静态方法。有关进一步的深入解释,请参阅“吼叫”的评论。

2。 在构造函数以及显示方法中,应使用“ this.version”和“ this.model”。这导致将值分配分配给要构造的类的实例。

3。您应该使用System.out.println来显示数据。除了打印您移交的String并将换行符添加到整个内容(下一行)之外,“ println”什么也没说。

printf有点复杂。 解释为什么在您使用printf的过程中什么都没打印出来,可以在参考文献中找到:

由格式说明符在格式字符串中引用的参数。如果参数多于格式说明符,则多余的参数将被忽略。参数的数量是可变的,可以为零。

因此,基本上,您尝试使用的printf方法通常会获得2个参数,即您要打印的格式和要打印的参数。由于您将格式定义为纯字符串(没有“%s”之类的格式),因此将不会放置任何参数,因为该格式定义的数量<参数的数量

答案 1 :(得分:0)

将具有主方法的类设为公共。在您的第一个示例中进行以下更改。

public class DemoMouse
{
    public static void main(String[] args) {
    {
        Mouse m = new Mouse(5.1, "Logitech");
        m.display();
    }
}