如何在另一个类中使用ArrayList?

时间:2014-10-12 22:55:42

标签: java android arraylist

我对Java很新,这听起来有点奇怪。 好的,基本上我正在接受9个值并将它们作为整数存储在ArrayListScores中。

我已经确认他们存放在那里,所有看起来都没问题。

我正在开发一个简单的机器人应用程序。

所以我们把它看作是从文本视图parseInt中获取类1中的9个值。这很好,这不是我的问题。

第1类

ArrayList<Integer> Scores = new ArrayList<Integer>();

Scores.add(Integer.parseInt(et1.getText().toString()));
Scores.add(Integer.parseInt(et2.getText().toString()));
Scores.add(Integer.parseInt(et3.getText().toString()));
Scores.add(Integer.parseInt(et4.getText().toString()));
Scores.add(Integer.parseInt(et5.getText().toString()));
Scores.add(Integer.parseInt(et6.getText().toString()));
Scores.add(Integer.parseInt(et7.getText().toString()));
Scores.add(Integer.parseInt(et8.getText().toString()));
Scores.add(Integer.parseInt(et9.getText().toString()));

我的问题是我还有另一个课程,我想做一些基本的计算,只需将所有分数加起来。

第2类

public class AddNumbers {

    private static AddNumbers instance;

    private AddNumbers(){

    }

    public static AddNumbers getInstance() {
        if(instance == null) {
           instance = new AddNumbers();
        }

        return instance;
    }

    public int getFinalScore() {
        ArrayList<Integer> Scores = new ArrayList<Integer>();
        int final_score = 0;

        for(int s: Scores){
            final_score += s;
        }

        return final_score;
    }
}

我是要在第2课中对所有分数进行基本累加,然后将结果发送回1级,但我不知道如何。

3 个答案:

答案 0 :(得分:3)

你真的需要另一堂课吗?为什么不把它放在Class 1的方法中?

看起来像是:

public int getFinalScore(){

您想将放入 ArrayList这里。这应该是:

public int getFinalScore(ArrayList<Integer> Scores) {

然后放置for循环,然后返回final_score

int final_score = 0;

for (int s: Scores) {
    final_score += s;
}

return final_score;

所以你的最终方法看起来像这样:

public int getFinalScore(ArrayList<Integer> Scores) {
    int final_score = 0;
    for (int s: Scores) {
        final_score += s;
    }

    return final_score;
}

您只需通过getFinalScore(Scores)调用即可。

答案 1 :(得分:1)

将来自第1类的分数作为参数传递到第2类中的getFinalScore方法

public int getFinalScore(List<Score> scores) {
    int final_score = 0;

    for(int s: scores){
        final_score += s;
    }

    return final_score;
}

然后在第1课中使用返回值作为总和。

答案 2 :(得分:0)

我要做的是从类1中创建ArrayList的变量/实例。所以首先你需要公开Scores,以便你的其他类可以访问它:

public static ArrayList<Integer> Scores = new ArrayList<Integer>(); //add public and static

Scores.add(Integer.parseInt(et1.getText().toString()));
Scores.add(Integer.parseInt(et2.getText().toString()));
Scores.add(Integer.parseInt(et3.getText().toString()));
Scores.add(Integer.parseInt(et4.getText().toString()));
Scores.add(Integer.parseInt(et5.getText().toString()));
Scores.add(Integer.parseInt(et6.getText().toString()));
Scores.add(Integer.parseInt(et7.getText().toString()));
Scores.add(Integer.parseInt(et8.getText().toString()));
Scores.add(Integer.parseInt(et9.getText().toString()));

然后,您需要像这样重新参考它:

public int getFinalScore() {
    ArrayList<Integer> scores = Class1.Scores; //make a new variable referring to the Scores (Case Matters!)
    int final_score = 0;

    for(int s: scores){ //use the new variable
        final_score += s;
    }

    return final_score;
}

或者,如果要再次在另一个类中使用它,可以使新变量scores(CASE重要)公开和静态(如果您愿意,这不是必需的)。但是,您仍然需要公开ArrayList!公共分数看起来像这样:

public class AddNumbers {

    private static AddNumbers instance;
    public static ArrayList<Integer> scores = Class1.Scores //made the variable public and static (optional)

    private AddNumbers(){

    }

    public static AddNumbers getInstance() {
        if(instance == null) {
           instance = new AddNumbers();
        }

    return instance;
    }
    //same as before
    public int getFinalScore() {
        ArrayList<Integer> scores = Class1.Scores; //make a new variable referring to the Scores (Case Matters!)
        int final_score = 0;

        for(int s: scores){ //use the new variable
            final_score += s;
        }

        return final_score;
    }
}

或者,您可以再次创建一个新参数并将其设置为Scores(再次,您仍需要将Scores公开):

public int getFinalScore(ArrayList<Integer> scores) {
    scores = Class1.Scores //set local variable to public variable
    int final_score = 0;

    for(int s: scores){
        final_score += s;
    }

    return final_score;
}