我试图将this.array的内容添加到临时数组,但是当我打印返回值时,它总是为空。
类对象
import java.util.*;
public class LetterInventory{
private ArrayList<Integer> array;
private int size;
public LetterInventory(String input){
size = input.length();
array = new ArrayList<Integer>();
for(int i = 0;i<input.length();i++){
array.add(i,(int)input.charAt(i));
}
}
public LetterInventory(){
size = 0;
array = new ArrayList<Integer>();
}
public int size(){
return size;
}
public LetterInventory add(LetterInventory other){
LetterInventory temp = new LetterInventory();
temp.array.addAll(array);
return temp;
}
public String toString(){
String result = "[";
for(int i = 0;i<=size-1;i++){
int temp = array.get(i);
result += (char)temp;
}
return result += "]";
}
}
和我的客户代码
import java.util.*;
public class Practice {
public static void main (String[] args){
LetterInventory l1 = new LetterInventory("aaa");
LetterInventory l2 = new LetterInventory("bbb");
System.out.println(l1);
System.out.println(l2);
LetterInventory sum = l1.add(l2);
System.out.println(sum);
}
}
无论我做什么,输出总是[]。我不需要帮助。正如我今天绝大多数时间都在努力解决这个问题。
答案 0 :(得分:3)
您正在跟踪size
与列表的实际大小分开。这在构造函数中没问题,但是您的add
方法复制了列表,但没有设置大小。尽量不要使用大小变量并使用array.size()
,这将始终是正确的。
PS。如上面的Kylar所述,你的add方法中还有另一个错误
答案 1 :(得分:0)
您toString()
方法使用成员size
迭代数组元素。但是当你添加时,你没有更新size
。
我的建议是删除size
成员变量,然后使用array.size()
答案 2 :(得分:0)
您的toString()
方法的for循环存在问题。在没有参数的构造函数中,没有将值设置为size
变量而不是0,因此它不会执行for循环
public String toString(){
String result = "[";
for(int i = 0;i<=size-1;i++){
int temp = array.get(i);
result += (char)temp;
}
return result += "]";
}
更改add()
方法,如下所示
public LetterInventory add(LetterInventory other){
LetterInventory temp = new LetterInventory();
temp.array.addAll(array);
temp.size = temp.array.size();
return temp;
}
答案 3 :(得分:0)
public LetterInventory add(LetterInventory other){
LetterInventory temp = new LetterInventory();
temp.array.addAll(this.array);
temp.array.addAll(other.array);
temp.size = this.size + other.size;
return temp;
}
这是答案