【发布时间】:2021-09-01 12:27:26
【问题描述】:
我有一个功能,其中用户输入数字并将这些数字添加到 Arraylist。该列表被传递给另一个类进行处理,并打印出返回值。但是当返回值时,会改变原来调用类时使用的Arraylist的值。
System.out.println("NATIVE LIST : "+loN); // original value - [2,+,3]
Evaluate evaluate = new Evaluate();
if (loN.size() > 2) {
evaluate.setR(loN);
System.out.println(evaluate.start()); // prints 5.0
}
System.out.println(loN); // value gets changed [5.0]
评估类代码:
public void setR(ArrayList<String> r) {
question = r;
}
public Number start(){
if (question.size() == 1){
return Double.parseDouble(question.get(0));
}else{
test();
}
}
private void check_pos(String c){
if (question.contains(c)){
pos = question.indexOf(c);
}
}
int test(){
try {
String val = null;
if (question.contains("+")) {
check_pos("+");
val = String.valueOf(Double.parseDouble(question.get(pos - 1)) +
Double.parseDouble(question.get(pos + 1)));
}
if (pos != question.size()-1) {
question.set(pos - 1, val);
question.remove(pos + 1);
question.remove(pos);
start();
}
}catch (Exception e){
e.printStackTrace();
}
return 2709;
}
【问题讨论】:
-
好吧,然后创建一个copy of the list?
-
谢谢,成功了! @汤姆
标签: java android class recursion arraylist