2015-03-30 2 views
0

Я пишу программу с двумя классами, одним человеком и одним основным. Класс человека использует get и устанавливается для шести человек, а затем основной класс запрашивает имена, а затем показывает пользователю шесть имен (в моем примере это только четыре). Можно ли использовать для этого цикл? Я знаю, что могу использовать список для этого, но это для школы, и они хотят, чтобы мы использовали конструкторы, установили и уделили первую неделю или около того. Теперь код выглядит так. Возможно ли это с примером вроде этого или мне нужно использовать список или массив?Петля с набором и набором?

PersonClass.java

public class PersonClass { 

    private String namn; 

    public void setNamn(String namn) { 
     this.namn = namn; 
    } 

    public String getNamn() { 
     return namn; 
    } 
} 

MainClass.java

import javax.swing.*; 

public class MainClass { 

    public static void main(String[] args) { 
     PersonClass person1 = new PersonClass(); 
     PersonClass person2 = new PersonClass(); 
     PersonClass person3 = new PersonClass(); 
     PersonClass person4 = new PersonClass(); 

     String namn1 = JOptionPane.showInputDialog("Enter full name for person 1!"); 
     person1.setNamn(namn1); 
     String namn2 = JOptionPane.showInputDialog("Enter full name for person 2!"); 
     person2.setNamn(namn2); 
     String namn3 = JOptionPane.showInputDialog("Enter full name for person 3!"); 
     person3.setNamn(namn3); 
     String namn4 = JOptionPane.showInputDialog("Enter full name for person 4!"); 
     person3.setNamn(namn4); 


     JOptionPane.showMessageDialog(null, "Person 1: " + person1.getNamn() + 
       "\nPerson 2: " + person2.getNamn() + "\nPerson 3: " + person3.getNamn() + 
       "\nPerson 4: " + person4.getNamn()); 
    } 
} 
+4

Посмотрите на массивы. – resueman

+1

Переименуйте 'PersonClass' на' Person'. Это уже класс, излишне добавлять 'Class' в его имя. Хорошие имена для функций, переменных и объектов проходят долгий путь. –

ответ

0
PersonClass[] persons = new PersonClass[4]; 
for(int i = 0; i < persons.length; i++){ 
    persons[i] = new PersonClass(); 
    persons[i].setNamn(JOptionPane.showInputDialog("Enter full name for person " + (i+1)); 
} 

Если диалог будет закрыт - там будет null вернулся.

+0

@resueman спасибо) Забыл о init. – Aero

1

Здравствуйте, из-за вашего тона, когда предлагаете массивы. Я считаю, что вам не нравится концепция, но, возможно, поговорите со своим учителем об этом и об ответах, которые вы получите здесь!

PersonClass[] personArray = {person1, person2, person3, person4}; 
    for (int i = 0; i < personArray.length; i++) 
    { 
     // (i + 1) because our array starts at 0, but it's the 0 + 1th person 
     String msg = "Enter full name for person" + (i + 1); 
     personArray[i].setName(JOptionPane.showInputDialog(msg)); 
    } 
+0

Спасибо за ваш ответ, но, как я уже сказал. В дальнейшем мы перейдем к массивам. Просто ищите ответ, если есть возможность петли с множеством и получить. – halalbin

0
List<PersonClass> people = new ArrayList<PersonClass>; 

for (int i = 0; i < 6; i++) { // set i to number of required people 
    PersonClass person = new PersonClass(); 
    person.setNamn(JOptionPane.showInputDialog("Enter full name for person " + (i + 1) +"!"); 

    people.add(person); 

    JOptionPane.showMessageDialog(null, person.getNamn()); 
} 

people будет содержать все новые PersonClass вы создали.

0

Один из способов сделать это с помощью цикла - сделать ваш основной класс таким. Смотрите комментарии:

import java.util.ArrayList; 

import javax.swing.*; 

public class Main { 

    public static void main(String[] args) { 


     ArrayList<PersonClass> people = new ArrayList<PersonClass>(); 

     int index=5; 

     //Loop that will ask for 6 names 
     for(int ii=0; ii<=index; ii++){ 

      //create person object 
      PersonClass person = new PersonClass(); 

      //get/set the name 
      person.setNamn(JOptionPane.showInputDialog("Enter full name for person " + ii + " !")); 

      //save name in arraylist 
      people.add(person); 
     } 

     int count = 1; 
     //will output names via a loop 
     for(PersonClass person : people){ 
      if(person.getNamn() != null){ 
       JOptionPane.showMessageDialog(null, "Person " + count + " name: " + person.getNamn()); 
      } 
      count++; 
     } 
    } 
} 

Если бы это было, я бы создать пользовательский конструктор для PersonClass, который устанавливает namn на строительство:

public class PersonClass { 

    private String namn; 

    //Custom constructor using a setter 
    public PersonClass(String namn){ 
     this.setNamn(namn); 
    } 
    public void setNamn(String namn) { 
     this.namn = namn; 
    } 

    public String getNamn() { 
     return namn; 
    } 
} 

Тогда я сделал бы это в моем MainClass:

import java.util.ArrayList; 

import javax.swing.*; 

public class Main { 

    public static void main(String[] args) { 


     ArrayList<PersonClass> people = new ArrayList<PersonClass>(); 

     int index=5; 

     //Loop that will ask for 6 names 
     for(int ii=0; ii<=index; ii++){ 
      //create, set, and add name to list 
      people.add(new PersonClass(JOptionPane.showInputDialog("Enter full name for person " + ii + " !"))); 
     } 





     int count = 1; 
     for(PersonClass person : people){ 
      if(person.getNamn() != null){ 
       JOptionPane.showMessageDialog(null, "Person " + count + " name: " + person.getNamn()); 
      } 
      count++; 
     } 
    } 
} 
1

Я лично также являюсь поклонником списков, но массивы так же хороши в выборе. Я строю вывод, поскольку он идет с небольшой помощью String.format.

List<PersonClass> persons = new ArrayList<PersonClass>(); 
    String output = ""; 
    for(int i = 1; i <= 6; i++) { 
     String name = JOptionPane.showInputDialog(String.format("Enter full name for person %d!", i)); 
     PersonClass person = new PersonClass(); 
     person.setNamn(name); 
     persons.add(person); 
     output += String.format("Person %d: %s\n",i, person.getNamn()); 

    } 

    JOptionPane.showMessageDialog(null, output); 
Смежные вопросы