我正在研究一些简单的java程序,我遇到了这个问题: 我是一个代表帐号的卡片类,我正在尝试使用以下方法获取所有其他帐号:getValidCards给出数字(有9个数字)
方法:getAlternativeNumbers是Number类中的一个方法,它计算单个替代数字。 在我的班级考试中,我打电话给
Assert.assertEquals(cardToTest.getValidCards(),"899999999");
班级卡:
private List<Number> numbers;
public String getValidCards(){
List<Card> toReturn = new ArrayList<>();
Card accountNumber;
for(int index=0 ; index < 9 ; index ++){
accountNumber = new Card(numbers);
List<number> alternatives = accountNumber.numbers.get(index).getAlternativeNumbers();
for(int j=0 ; j < alternatives.size(); j++){
accountNumber.replace(index, alternatives.get(j));
if(accountNumber.isValid()){
toReturn.add(accountNumber);
}
}
}
return printFinalListOfNumbers(toReturn);
}
我的问题是:替换方法:
private void replace(int index ,Number number){
numbers.set(index,number);
}
这是在数字属性上进行更改,当我初始化 accountNumber = new Card(数字); 时,它会记录已更改的数字,但是我正在更改对象AccountNumber的数量,而不是我在测试中从中调用对象的数字:card.getValidDigits();
如果有人知道答案,请帮助..
答案 0 :(得分:1)
使Card
构造函数复制传入的参数,例如
public Card(List<Number> numbers) {
this.numbers = new ArrayList<>(numbers);
}
这样,内部numbers
将是一个单独的副本,其内容与创建时相同。