我是新手,正在学习方法和构造函数。问题如下
- 在Eclipse中运行以下程序时,系统提示我可以将main方法声明为静态方法。
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();
}
}
- 当我被迫从main移除static并将DemoMouse设置为static时,我没有得到完整的输出。我得出的是Version is Model 是。我希望输出为
*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();
}
}
答案 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(); } }