Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个类中使用另一个类中的ArrayList?_Java_Android_Arraylist - Fatal编程技术网

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

Java 如何在一个类中使用另一个类中的ArrayList?,java,android,arraylist,Java,Android,Arraylist,我对Java相当陌生,这听起来可能有点奇怪。 好的,基本上我取9个值,并将它们作为整数存储在ArrayListScores中 我已经确认它们是储存在那里的,看起来一切正常 我正在开发一个简单的机器人应用程序 所以我们把它当作我从文本视图中获取类1中的9个值。这很好,这不是我的问题 第一类 ArrayList<Integer> Scores = new ArrayList<Integer>(); Scores.add(Integer.parseInt(et1.getTex

我对Java相当陌生,这听起来可能有点奇怪。 好的,基本上我取9个值,并将它们作为整数存储在ArrayListScores中

我已经确认它们是储存在那里的,看起来一切正常

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

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

第一类

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()));
ArrayList分数=新建ArrayList();
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 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;
    }
}
公共类addnumber{
私有静态addnumber实例;
私人地址号码(){
}
公共静态AddNumbers getInstance(){
if(实例==null){
实例=新的AddNumbers();
}
返回实例;
}
public int getFinalScore(){
ArrayList分数=新建ArrayList();
int最终评分=0;
对于(int s:分数){
最终_分数+=s;
}
返回最终成绩;
}
}

我本来要对2班的所有分数做一个基本的相加,然后把结果送回1班,但我不知道怎么做

你真的需要再上一节课吗?为什么不把它放在类1的方法中呢

它看起来像:

public int getFinalScore(){
public int getFinalScore(ArrayList<Integer> Scores) {
您想在这里输入
ArrayList
。这应该是这样的:

public int getFinalScore(){
public int getFinalScore(ArrayList<Integer> Scores) {
因此,您的最终方法如下所示:

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

    return final_score;
}
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;
    }
}
public int getFinalScore(数组列表分数){
int最终评分=0;
对于(int s:分数){
最终_分数+=s;
}
返回最终成绩;
}

您可以通过
getFinalScore(Scores)

将类1中的分数作为参数传递到类2中的getFinalScore方法来调用它

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

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

    return final_score;
}
public int getFinalScore(列出分数){
int最终评分=0;
对于(int s:分数){
最终_分数+=s;
}
返回最终成绩;
}

然后使用返回值作为类1中的和。

我要做的是从类1创建ArrayList的变量/实例。因此,首先,您需要公开分数,以便您的其他班级可以访问该分数:

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(数组列表分数){
分数=类别1。分数//将局部变量设置为公共变量
int最终评分=0;
对于(int s:分数){
最终_分数+=s;
}
返回最终成绩;
}

谢谢你的帮助,是的,我只想让逻辑远离第一类Gui内容。谢谢,我会试试这个。你应该在问题中澄清你的期望。考虑到这个问题的措辞,hichris123的回答是完全合理的,特别是考虑到关于java新手的评论。我想大多数读到这个问题的人都会认为sum方法应该是课堂上定义分数的一种方法
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;
}