2012-05-26 4 views
0

Я совершенно не знаком с java. Я пытаюсь создать свою первую программу & Я получаю эту ошибку.получение незаконного начала выражения ошибки

E:\java>javac Robot.java 
Robot.java:16: error: illegal start of expression 
public String CreateNew(); { 
        ^
Robot.java:16: error: ';' expected 
public String CreateNew(); { 
        ^
2 errors 

Ниже представлена ​​моя программа.

public class Robot { 
    public static void main(String args[]){ 
     String model; 
     /*int year;*/ 
     String status; 

     public String CreateNew() { 
      Robot optimus; 
      optimus = new Robot(); 
      optimus.model="Autobot"; 
      /*optimus.year="2008";*/ 
      optimus.status="active"; 
      return (optimus.model); 
     } 
    } 
} 
+2

как примечание стороны, как правило, рекомендуется начинать методы в нижнем регистре, в то время как классы имеют имена с заглавной буквы. Таково соглашение Java – Hawken

ответ

4

Вы пытаетесь определить метод (CreateNew) в метод (main), который вы не можете сделать в Java. Переместите его из main; и, как model и status, как представляется, переменные экземпляра (а не метод переменных), перемещать их, а также:

public class Robot { 
    // Member variables 
    String model; 
    /*int year;*/ 
    String status; 

    // main method 
    public static void main(String args[]){ 

     // Presumably more stuff here 
    } 

    // Further method  
    public String CreateNew() { 
     Robot optimus; 
     optimus = new Robot(); 
     optimus.model="Autobot"; 
     /*optimus.year="2008";*/ 
     optimus.status="active"; 
     return (optimus.model); 
    } 
} 

на основе его содержания, вы можете CreateNew быть static (так что он может быть вызван через Robot.CreateNew, а не через экземпляр Robot). Как это:

public class Robot { 
    // Member variables 
    String model; 
    /*int year;*/ 
    String status; 

    // main method 
    public static void main(String args[]){ 

     // Presumably more stuff here 
    } 

    // Further method  
    public static String CreateNew() { 
    //  ^----------------------------- here's the change 
     Robot optimus; 
     optimus = new Robot(); 
     optimus.model="Autobot"; 
     /*optimus.year="2008";*/ 
     optimus.status="active"; 
     return (optimus.model); 
    } 
} 

Используется как

String theModel = Robot.CreateNew(); 

... хотя непонятно мне, почему вы хотите создать Robot экземпляр, а затем выбросить его и просто вернуть значение этого члена model экземпляра.


Немного не по теме, но подавляющие конвенции в Java является то, что имена методов (статической или экземпляр) начинаются с строчной буквой, например, createNew, а не CreateNew.

+0

@Jeffrey: Спасибо, я пропустил, что они использовались в 'CreateNew'. –

+0

@Jeffrey, если мне нужен основной метод в той же программе, как мне это написать. – user1419170

+0

@ user1419170: См. Выше. –

1

Перед тем, как создать CreateNew(), вы не закрыли свой основной метод. На самом деле, я не думаю, что вы хотели иметь основной метод в своем классе Robot, у вас должен быть только один основной метод для всей вашей программы. И ваш CreateNew должен быть конструктор:

public class Robot { 
     String model; 
     /*int year;*/ 
     String status; 

     public Robot() { 
      this.model="Autobot"; 
      this.status="active"; 
     } 
    } 
} 

, а затем в другом классе, который содержит ваш основной метод (или это может быть в том же классе тоже):

public class OtherClass { 
    public static void main(String[] args) { 
     Robot optimus = new Robot(); // here you create an instance of your robot. 
    } 
} 

, то вы можете иметь второй конструктор, который принимает параметр модели и статус, как, что:

public Robot (String m, Status s) { 
     this.model=m; 
     this.status=s; 
} 

и, наконец, в главном:

Robot prime = new Robot("aName", "aStatus"); 
Смежные вопросы