Java打印方法在课堂上不起作用

时间:2013-11-14 14:56:24

标签: java class oop methods

我试图在我的actor类中获取print方法来打印出的String 内置在toString()方法中。但是我不断收到错误。 (无效的方法声明,需要返回类型)

public class actor {

    private String name;
    private String address;
    private int age;


public actor(String name, String address, int age) {

    this.name = name;
    this.address = address;
    this.age = age;


}


public void setName (String name) {

    this.name = name;

}


public void setAddress (String address) {

    this.address = address;
}


public void setAge (int age) {

    this.age = age;

}

public void setFilm () {


}

public String getName () {
    return name;

}

public String getAddress () {
    return address;

}

public String toString (String name, int age, String address){

        return name+" who's "+age+" and lives in "+address;


}


public void print (){
    String a = toString();
    System.out.println(a);

}


print();
}

我一直试图让这个工作很长一段时间无济于事。

11 个答案:

答案 0 :(得分:4)

以下是您遇到麻烦的两个部分:

  1. 为了运行您的程序,您必须有一个主方法。
  2. 您必须了解静态和非静态的含义。
  3. 首先,正如其他人所提到的,你不能只运行一个方法,因为它是在你的类中声明和定义的。实际上,您需要通过main方法直接或间接调用它。主要方法是这样写的:

    public static void main(String[] args) {
        // Do Stuff
    }
    

    其次,你必须了解静态和非静态的含义。这意味着,您必须了解类和对象之间的区别。

    Classes 是蓝图。它们描述了如何构建特定类型的对象,它具有哪些属性(或字段),以及可以从中调用哪些方法。

    Objects 是类声明的对象的实际实例。可以这样想:一个类就像智能汽车的蓝图。对象是智能汽车本身。

    现在,静态与非静态。

    静态意味着它属于类(蓝图),而不是属于实际对象。您会注意到, main 方法是静态的。它属于它声明的类,而不是任何实例对象。这意味着,在它自身之外,main方法只知道它所在的类,以及该类中的任何其他静态方法或对象。非静态的东西属于从类创建的实际对象 - 主方法将知道关于这些实际对象的,除非它们是在main方法本身内创建的。

    所以,这样的事情是行不通的:

    public class StuffDoer {
        public void doStuff {
            System.out.println("Doing Stuff");
        }
    
        public static void main(String[] args) {
            doStuff();  // Won't work!
            // You can't call a non-static, instance method in a static method!
        }
    }
    

    相反,您可以先在main方法中创建类的新实例对象,然后从实例对象中调用非静态实例方法:

    public class StuffDoer {
        public void doStuff {
            System.out.println("Doing Stuff");
        }
    
        public static void main(String[] args) {
    
            new StuffDoer().doStuff();  // This will work,
            // because now you have an instance to call the instance method off of.
        }
    }
    

    这通常不是一个好选择,但也会起作用:

    public class StuffDoer {
        public static void doStuff { //Now, we make this method static
            System.out.println("Doing Stuff");
        }
    
        public static void main(String[] args) {
            doStuff();  // This will work now, because this method is static.
        }
    }
    

答案 1 :(得分:1)

您正在尝试从您的班级主体调用print()。相反,写一个主方法并从那里打印:

public static void main(String[] args) {
  Actor a = new Actor(...);
  a.print();
}

答案 2 :(得分:1)

您应该有一个主要功能让程序运行,如:

删除最后一行print()然后创建一个新文件调用Main.java,写

package yourPackage // put them into the same package, 
                    main class can call actor class

public class Main{
   public static void main(String[] args) {
      actor a = new actor();
      a.print();
   }
}

答案 3 :(得分:1)

为什么需要print()方法?你可以使用 -

Actor a = new Actor(...);
System.out.println(a);

这将隐式执行toString()方法

答案 4 :(得分:0)

理想情况下,你应该这样做。由于toString()方法的目的是为对象提供有意义的String表示。

actor actorObj = new actor();
System.out.println(actorObj );

答案 5 :(得分:0)

在课堂主体上调用print();无效。删除以下方法调用。

 print();

答案 6 :(得分:0)

首先,您应该从其他地方调用print()方法(例如main)。即使这样,您也会遇到错误:您正在调用toString()方法(没有参数,这是从Object类中获取的)。只需从toString方法中删除参数即可覆盖该参数。它无论如何都可以看到自己类的字段。有了这个,您可以执行以下操作,并利用Java的默认toString调用:

public static void main(String[] args) {
    System.out.println(new Actor("Bob", "410 Main Street", 42);
}

答案 7 :(得分:0)

Java不允许您在类的主体中调用方法,因为您尝试使用print();代码行。您必须将调用打印到另一个方法中。例如

public static void main(String[] args) {
    actor a = new actor();
    a.print();
}

答案 8 :(得分:0)

通过向您的类添加main方法并在该方法中使用Actor的构造函数,您可以创建一个Author对象。在此Author对象上调用print()。

TJamesBoone给出了一个非常好的答案,让你了解真正发生的事情。按照他的回答,它会按你的意愿做。

  

https://stackoverflow.com/a/19981973/1785341

答案 9 :(得分:0)

这是你的代码..编译并运行..       公共阶层演员{

Distinct()

答案 10 :(得分:0)

简单,因为它.... 一旦在类中编写toString()方法,然后执行另一个名为print()的方法,并在print()方法内调用toString()方法。

public void print()
{
  System.out.println(toString());
}