Estoy tratando de conseguir el método de impresión en mi clase de actor para imprimir la Cadena que se
construido en el método toString (). Sin embargo sigo recibiendo un error. (no válido declaración de método, tipo de retorno requerida)

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();
}

He estado tratando de conseguir este trabajo durante bastante tiempo fue en vano.

  • Se le llama print() en el cuerpo de la clase? Por qué? ¿Qué crees que pasaría?
  • Las clases comienzan con una mayúscula en java. Este es un no-opcional a la convención de nomenclatura
  • Además, quiero señalar que System.out.println("whatever") automáticamente las llamadas de «lo que sea».toString(). Así que usted no necesita llamar a ti mismo 🙂
InformationsquelleAutor Anon Omus | 2013-11-14

11 Comentarios

  1. 4

    He aquí las dos partes a los problemas que está teniendo:

    1. con el fin De ejecutar el programa, usted tiene que tener un método main.
    2. Usted tiene que entender lo estáticos y no estáticos decir.

    Primero, como se ha mencionado por otros, no se puede tener un método de ejecución porque es declarada y definida en su clase. Usted necesita realmente tener que llamó, directa o indirectamente, por el método principal. El principal método se escribe así:

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

    En segundo lugar, usted tiene que entender lo estáticos y no estáticos decir. Lo cual significa que usted tiene que entender la diferencia entre clases y objetos.

    Clases son de color azul impresiones. Se describe cómo crear un tipo particular de objeto, lo que las propiedades (o campos) que lo tiene, y qué métodos puede ser llamado fuera de ella.

    Objetos de la instancias de de los objetos declarados en una clase. Piense en ello como esto: Una clase es como el modelo para un coche smart. Los objetos son los coches inteligentes sí mismos.

    Así que ahora, estático vs no-estático.

    Static significa que pertenece a la clase (los planos), más bien que el objeto real. El principal método, usted se dará cuenta, es estática. Pertenece a la clase es declarado en lugar de a cualquier los objetos de instancia. Esto significa que, fuera de sí mismo, el principal método sólo sabe acerca de la clase que sea, y de cualquier otro de los métodos estáticos o de los objetos de dicha clase. Cosas que no son estáticos, pertenecen a los objetos creados a partir de la clase, y el principal método sabrá nada acerca de estos objetos reales, a menos que se crean dentro del método main de la misma.

    Así, algo como esto no va a funcionar:

    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!
        }
    }

    En su lugar, puede crear una nueva instancia de un objeto de su clase dentro del método main, y luego llamar a la no-estático método de instancia de instancia de objeto:

    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.
        }
    }

    Esto no suele ser tan buena de una elección, pero también de trabajo:

    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.
        }
    }
  2. 1

    Usted está tratando de llamar a imprimir() de su cuerpo de la clase. En su lugar, escribir un método principal e imprimir desde allí:

    public static void main(String[] args) {
      Actor a = new Actor(...);
      a.print();
    }
    • He intentado llamar desde mi principal pero me da otro error. No variable estática no se puede hacer referencia a partir de un contexto estático.
    • Puede publicar su método main? Suena como tal vez usted está tratando de llamar a imprimir en la clase, en lugar de en una instancia de la clase.
    • usted necesita crear una instancia de la Clase y llamar al método en la instancia (como alexroussos muestra en el ejemplo)
  3. 1

    Usted debe tener una función principal para permitir la ejecución del programa, como:

    eliminar la última línea de impresión (), a continuación, cree un nuevo archivo de la llamada Main.java, escribir

    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();
       }
    }
  4. 1

    ¿Por qué necesita print() método ? Usted puede utilizar –

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

    Este implícitamente ejecutar toString() método

  5. 0

    Idealmente, usted debe hacer de esta manera. Desde el fin del método toString() es para dar significativa representación de Cadena de un objeto.

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

    Llamar print(); en el cuerpo de la clase no es válido. Retire la siguiente llamada al método.

     print();
  7. 0

    Primero apagado, usted debe llamar a la print() método desde otro lugar (main por ejemplo). Incluso con esto, usted tiene un error: se llama a la toString() método (sin argumentos, que es tomado de la clase de Objeto). Simplemente quite los argumentos de su toString método para anular esa. Se pueden ver los campos de su propia clase de todos modos. Con esto, usted puede hacer algo como lo siguiente, y tomar ventaja de Java por defecto del método toString de la llamada:

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

    Java no permite llamar a un método en el cuerpo de una clase como usted está tratando de hacer con la línea de código que se print(); debe poner la llamada para imprimir dentro de otro método. Por ejemplo

    public static void main(String[] args) {
        actor a = new actor();
        a.print();
    }
    • Ok, me las arreglé para conseguir que la impresión de los detalles moviendo el método de impresión a la principal. Lo siento por la naturaleza básica de la pregunta, pero soy bastante nuevo en programación orientada a objetos.
    • No es un problema. Seguir trabajando en la programación orientada a objetos y muy pronto vamos a estar respondiendo a las preguntas de los demás.
  9. 0

    Mediante la adición de un método main de la clase y utilizando el constructor para el Actor en que el método crea un objeto Author. Sobre este Autor, el objeto de la llamada de impresión().

    TJamesBoone ha dado una muy buena respuesta para darte una idea de lo que realmente está sucediendo. Siga su respuesta y va a hacer lo que quiera.

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

  10. 0

    aquí está tu código.. compilar y ejecutar..
    clase pública 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;
    
     }
     @Override
    
      public String toString (){
    
           return name+" who's "+age+" and lives in "+address;
    
    
       }
    
    
       public void print (){
         //String a = toString();
         System.out.println(this);
    
       }
    
        public static void main( String[] args )
      {
           actor a = new actor( "xyz","abc",20 );
          a.print();
       }
      }  
  11. 0

    Simple como es….
    Una vez que usted escribe método toString() en una clase, a continuación, hacer otro método print() y llamar dentro del método print (), método toString ().

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

Dejar respuesta

Please enter your comment!
Please enter your name here