Java 如何在一个类中使用另一个类中的ArrayList?
我对Java相当陌生,这听起来可能有点奇怪。 好的,基本上我取9个值,并将它们作为整数存储在ArrayListScores中 我已经确认它们是储存在那里的,看起来一切正常 我正在开发一个简单的机器人应用程序 所以我们把它当作我从文本视图中获取类1中的9个值。这很好,这不是我的问题 第一类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
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;
}