我对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级,但我不知道如何。
答案 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;
}