我正在编写一个包含两个类的程序,一个人类和一个主类。 人员类使用get和set设置六个人,然后主类询问名称,然后向用户显示六个名称(在我的示例中,它仅显示四个)。 是否可以为此使用循环? 我知道我可以为此使用一个列表,但它是用于学校的,他们希望我们在第一周左右使用构造函数进行设置和获取。 现在的代码如下所示。 像这样的例子甚至可能吗?还是我需要使用列表或数组?

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

#1楼 票数: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));
    }

#2楼 票数:1

我个人也是List的粉丝,但是Array同样是一个不错的选择。 我使用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);

#3楼 票数: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

#4楼 票数: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

#5楼 票数: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创建一个自定义构造PersonClass ,该构造函数namn在构造中设置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执行此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++; 
        }
    }
}

  ask by halalbin translate from so

未解决问题?本站智能推荐:

3回复

循环,获取/设置方法,以及多个类,哦,我的

我真的很挣扎于get / set方法。 我理解基本概念 - 首先设置值然后检索它。 我发现用我已经学过的最小概念找到有关它的信息相当困难。 我是第6章或我的第一个Java和编程课程,它都在线。 我创建了一些使用set / get方法的其他类,但那些似乎并不适合这个项目。 Create
1回复

从参数获取getDiscount()时出现问题(JAVA)

我想从扩展 person 类的员工类中的吸气剂那里获得折扣。 折扣因 hourlyWorked 而异。 我已经设置了参数。 当我使用 setMethods 时,我可以获得折扣。 例如,如果我使用 我得到了预期的结果。 但我不能得到e.getDiscount()); 从参数本身即 我得到 0 作为折扣
1回复

如何在我的代码行中正确设置totalSeconds()(小时分秒)并返回它

嘿伙计们,我的老师给了我一个时钟程序,它必须返回信息等,到目前为止,我对总秒数应该如何工作感到有些困惑,我将在下面展示我的驱动程序和正常文件,请帮助。 我必须确保小时分钟和秒数以总秒数返回。 我将发布我对代码所做的实时编辑我试图通过添加一个变量并将其添加到驱动程序中来返回它,但无济于事。 预期的结果
2回复

JAVA,setter未获取发送到我的构造器程序的值,返回零

我遇到的错误是,控制台应显示类似于(1,2)(3,4)(5,6)(7,8)的值时,正在打印出点值中的所有零。 我将错误跟踪到设置程序,在此程序中未加载该值。 例 } 这不会将私有双精度N1.x更新为相应的构造函数值1。我相信这是个问题,但是我对编码并不陌生,仍然需要学习很多东西。
6回复

是否可以循环设置器和吸气剂?

我相信这不可行,但我还是想问,以防万一我错了: 我曾经多次听说,每当你在一批中有一定数量的非常相似的代码行时,你应该总是循环遍历它们。 所以说我有类似以下的东西。 没有办法减少代码行,例如,在下面,对吧? 我确信在某个地方之前会有人问这个问题,但Google和SO Search都
1回复

循环通过吸气剂的大小?

我在这里有这种方法: 如注释行中所述,我需要遍历getter方法 getUnitType()的大小 。 目的是将显示的单位缩小为仅具有“核心”单位类型的单位。 我试过了: 和 当然失败了-惨不忍睹。 我在这里停留在这一部分。 任何指针家伙?
1回复

如何从android中的settergetter循环?

我在 Array List 中创建了一个 setter getter,我想在我的活动中显示它们。 这是我的代码 从get(0) ,我只从我的回复中得到索引 0。 那么,如何获取所有索引呢? 谢谢你
4回复

返回循环中每次迭代的结果

我正在做的事情会产生正确的结果。 但是,从设计POV来看是错误的。 该程序的重​​点是列出数字的所有幂的结果,直到并包括用户定义的限制。 我有一个接受扫描仪的基础和指数的构造函数。 然后是一种方法,该方法利用for循环来计算每个指数的幂。 现在的问题是,我直接从此方法打印每次循环