【问题标题】:How to change array to an object class?如何将数组更改为对象类?
【发布时间】:2017-11-21 10:56:00
【问题描述】:

我已删减代码以缩短页面,但我想问如何将 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);
    }

}

感谢任何帮助,正如我所说,这段代码大部分已被删除,这是一个已经完成的旧项目,只是想看看我是否可以更改一些功能。

【问题讨论】:

  • 您创建的Interests 类有什么问题?你能不能从其他任何一个类中调用它? Interests interests = new Interests;

标签: java arrays class


【解决方案1】:

好的,这就是我会为您清理并使其正常工作的方法。首先,想想你想要做什么。你想创建一个有多个兴趣的人,对吧?因此,按照上面的示例,兴趣类可以更改为典型的 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 设置所有兴趣的初始列表,然后您可以从那里添加新兴趣、获取所有兴趣或获取任何个人兴趣。

希望这有助于您澄清这应该如何组合在一起!

所以现在是时候实例化所有内容了。让我们创建一些我们将使用的Interestobjects:

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

瞧!

【讨论】:

  • 在我的主课中如何称呼它?所以如果我创建一个新人`Person[] newPerson = new Person[1]; newPerson[0] = new Person(String name, ArrayListinterests)` 如果我硬编码调用它,我应该在arrayList 位中放入什么
  • 我现在在我最初的评论中添加了一些额外内容,以展示如何实例化所有内容并将它们放在一起。希望对您有所帮助!
  • 是的,我还是想通了,但感谢您的帮助!
【解决方案2】:

首先,创建一个Interestclass:

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

然后在Personclass 中去掉private String[] personInterests = new String[3];

并将其替换为:

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

【讨论】:

    【解决方案3】:

    你的兴趣类的逻辑已经到了那里,但它需要一些改变

    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”和“football”,因为它们在您的 Interest 类的构造函数中。您的类的构建方式,如果在创建对象时不提供 int 和 String 就无法使用它

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

    variableName.addInterest("basketball");
    
    String interest = variableName.getInterest(1);
    

    如果您遇到困难,我建议您在线查看一个简单的 java 教程。像这样实例化 Java 类并调用它们的方法是 Java 中的基本概念:)

    【讨论】:

    • 谢谢你,我知道你不应该说它很有帮助,我用了它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2021-05-22
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多