如何将数组更改为对象类?

时间:2017-11-21 10:56:01

标签: java arrays class

我已经删除了缩短页面的代码,但是我问如何将personInterests更改为自己的类。对模糊问题道歉,但基本上我想将Person类中的personInterests更改为personInterests有多个变量的类。

import java.util.ArrayList;
import java.util.*;

public class Person{

    private String personName;
    private String[] personInterests = new String[3];

    public Person(String personName, String[] personInterests){
        this.personName = personName;
        this.personInterests = personInterests;
    }   

    public void setInterests(String[] personInterests){
        this.personInterests = personInterests;
    }

    public String[] getInterests(){
        return personInterests;
    }

    public String getName(){
        return personName;
    }


    public String toString(){
        String result = getName() + " ";
        for (String interests : personInterests) {
            result += interests + " ";
        }
        return result;
    }
}

这是我的想法,它是如何工作的,不知道我将如何使用这个类并稍后调用它。

import java.util.ArrayList;
import java.util.*;

public class Interests {
    private int interestDangerRating;
    private String interestName;
    private ArrayList<Interests> interestsList = new ArrayList<>();

    public Interests (int interestDangerRating ,String interestName){
        this.interestDangerRating = interestDangerRating;
        this.interestName = interestName;
    }

    public void addInterests(Interests p){
        interestsList.add(p);
    }

    Interests getInterests(int i){
        return interestsList.get(i);
    }

}

任何帮助都表示赞赏,因为我说这个代码大部分被取出,这是一个已经完成的旧项目,只是想看看我是否可以改变一些功能。

3 个答案:

答案 0 :(得分:0)

首先,制作一个Interest课程:

public class Interest {
   private int interestDangerRating;
   private String interestName;
   // .. getters and setters 
    }

然后在Person课程中摆脱private String[] personInterests = new String[3];

并将其替换为:

  private ArrayList<Interest> interestsList = new ArrayList<>();

答案 1 :(得分:0)

您将使用您的兴趣类的逻辑来实现这一目标,但需要进行一些更改

import java.util.ArrayList;
import java.util.*;

public class Interests {

private int interestDangerRating;

// Is this a unique name for the entire class? If yes then no worries, but if not 
// then its not needed, you've already got a list of interest names below
private String interestName;

// Change the array list to hold Strings, it's a list of words
private ArrayList<String> interestsList = new ArrayList<>();

public Interests (int interestDangerRating ,String interestName){
    this.interestDangerRating = interestDangerRating;
    this.interestName = interestName;
}

public void addInterest(String p){ // Again, change this to String
    interestsList.add(p);
}

String getInterest(int i){ // Change this to return a String, since we changed the ArrayList above
    return interestsList.get(i);
}
}

你也需要考虑这门课程。如果有长度变量,你怎么知道列表中有多少兴趣?或者返回整个兴趣列表而不仅仅是1的方法呢?

此外,此类中只设置了一个interestDangerRating;如果每个利益都有不同的危险等级,你不应该为每个利益添加一个危险等级吗?

在访问新课程方面,您需要在代码中创建一个类:

Interests variableName = new Interests(1, "football");

我已经随机选择了上面的“1”和“足球”,因为它们属于您兴趣类的构造函数。构建类的方式,在创建对象时不提供int和String就不能使用它

最后,要调用类上的方法,可以使用上面创建的变量来调用它的方法:

variableName.addInterest("basketball");

String interest = variableName.getInterest(1);

如果您正在努力,我建议您在线查看简单的java教程。实现java类并调用它们的方法是Java中的基本概念:)

答案 2 :(得分:0)

好的,这就是我要做的就是为你清理它并让它发挥作用。首先,想想你想要做什么。你想创建一个拥有多个兴趣的人,对吧?因此,上面的示例中的Interest类可以更改为典型的Java对象类,如下所示:

public class Interest {
    private int dangerRating;
    private String name;

    public Interest (int dangerRating, String name) {
        this.dangerRating = dangerRating;
        this.name = name;
    }

    public int getDangerRating() {
        return dangerRating;
    }

    public String getName() {
        return name;
    }
}

现在我们设置了Interest课程,您可以在其中设置您感兴趣的名称和危险等级。我们现在需要做的是修改您的Person课程,以便为您创建的每个Person存储兴趣列表

import java.util.ArrayList;

public class Person{
    private String name;
    private ArrayList<Interest> interests = new ArrayList<Interest>();

    public Person(String name, ArrayList<Interest> interests) {
        this.name = name;
        this.interests = interests;
    }   

    public void addInterest(Interest newInterest) {
        interests.add(newInterest);
    }

    public Interest getInterest(int indexOfInterest) {
        return interests.get(indexOfInterest);
    }

    public ArrayList<Interest> getInterests() {
        return interests;
    }

    public String getName() {
        return name;
    }

    public String toString() {
        String result = getName() + " ";
        for(Interest interest : interests) {
            result += interest.getName() + "(" + interest.getDangerRating() + ")" + " ";
        }
        return result.trim();
    }
}

这允许您为新Person设置所有兴趣的初始列表,并且从那里,您可以添加新的兴趣,获得所有兴趣或获得任何个人兴趣。

希望这有助于澄清这一切是如何组合在一起的!

现在是时候实例化一切了。让我们创建一些我们将使用的Interest个对象:

Interest golf = new Interest(1, "golf");
Interest swimming = new Interest(3, "swimming");

现在假设我们想要两个叫John和Mary的人。约翰喜欢高尔夫和游泳,而玛丽只喜欢游泳。然后我们按如下方式创建Interest列表:

ArrayList<Interest> johnsInterests = new ArrayList<Interest>();
johnsInterests.add(golf);
johnsInterests.add(swimming);

ArrayList<Interest> marysInterests = new ArrayList<Interest>();
marysInterests.add(swimming);

最后,我们将创建两个Person对象,其中包括人名和兴趣列表。

Person john = new Person("John", johnsInterests);
Person mary = new Person("Mary", marysInterests);

瞧!