2014-02-13 6 views
0

Для моей программы я создаю 2 человека, имена и возрасты из командной строки. Затем моя программа отобразит toString в диалоговом окне для каждого человека. Однако я пытаюсь реализовать два метода, которые изменяют поле данных имени и поле данных возраста каждого человека. Затем отобразите два дополнительных диалоговых окна с измененными значениями. При вызове моего метода он редактирует объект вместо создания новых.Вызов нестатического метода return type void

Мне интересно, как я должен называть мои методы, которые создадут новых Лиц?

Например мои аргументы командной строки: Bill 58 Miley 21

Мой выход:

Dr. Bill is 59 years old. 
Dr. Miley is 22 years old. 

Ожидаемый выход (Dialog Boxes):

Bill is 58 years old. 
Dr. Bill is 59 years old. 
Miley is 21 years old. 
Dr. Miley is 22 years old. 

Так 4 диалоговые окна выскакивать.

Мой код:

import javax.swing.JOptionPane; 

public class PersonMethods{ 
    public static void main(String[] args){ 
     Integer age1 = new Integer(0); 
     Integer age2 = new Integer(0); 

     age1 = Integer.parseInt(args[1]); 
     age2 = Integer.parseInt(args[3]); 

     // Create Person Objects 
     Person p1 = new Person(args[0], age1); 
     Person p2 = new Person(args[2], age2); 
     p1.phd(); 
     p1.birthday(); 
     p2.phd(); 
     p2.birthday(); 


     String firstOutput = p1.toString(); 
     String secondOutput = p2.toString(); 

     //Display a mesage panel in the center of the screen 
     JOptionPane.showMessageDialog(null, firstOutput); 
     JOptionPane.showMessageDialog(null, secondOutput); 
    } 

} 

// Stores the name and age for a Person 
class Person{ 
    // Data fields 
    private String name; 
    private Integer age; 

    public Person(String n1, int a1){ 
     name = n1; 
     age = a1; 
    } 

    // Add Dr to name 
    public void phd(){ 
     name = "Dr. "+name; 
    } 

    // Add one to age 
    public void birthday(){ 
     age = age+1; 
    } 

    public String toString(){ 
     String output = name + " is " + age + " years old."; 
     return output; 
    } 
} 
+1

Каков фактический выход? – Christian

+0

@ Христиан Христиан, я добавил свой текущий выход. Кажется, вызов моего метода просто изменяет текущий объект, а не создает новый. Но я попытался создать нового человека с помощью метода внутри, но из-за его пустоты я получил ошибку: o –

+0

Я не понимаю, почему вы хотите создать новую 'Person's? Модификация их отлично подходит для меня. – Christian

ответ

2

Вы можете вставить еще два вызова toString() перед вызовом birthday() или phd(), чтобы получить выход указанной вами.

 // Create Person Objects 
    Person p1 = new Person(args[0], age1); 
    Person p2 = new Person(args[2], age2); 
    String[] outputs = new String[4]; 

    outputs[0] = p1.toString(); 
    outputs[1] = p2.toString(); 

    p1.phd(); 
    p1.birthday(); 
    p2.phd(); 
    p2.birthday(); 


    outputs[2] = p1.toString(); 
    outputs[3] = p2.toString(); 

    //Display a mesage panel in the center of the screen 

    for (String output : outputs) { 
     JOptionPane.showMessageDialog(null, output); 
    } 
+0

Хм интересно! Я не реализовал цикл for. Тем не менее, я создал больше вызовов toString и еще два диалоговых окна сообщений, и, похоже, теперь он отлично получается! –

Смежные вопросы