问题描述
我遇到一项作业的问题,其中一小部分作业是针对以下描述的编写方法:
采用两个值的方法;要交换的值以及要排除的硬币类型,然后返回将交换为总值所需的最小硬币,并以String形式返回输出。例如changeCalculator(555,50)可能会返回“要交换的硬币是:2 x 200p,1 x 100p,0x50、2 x 20p,1 x 10p,其余为5p”。
我能够编写代码,但是编写的代码在循环中具有System.out.print,并且由于使用循环,我无法在返回字符串类型的同时使代码正常工作。
您需要了解的所有代码,是在我放置的代码类的开始处,并且已经初始化了构造函数中的硬币列表:
private List<Integer> coinList = new ArrayList<Integer>();
以下是我的代码:
public void changeCalaculator (int totalCoinValue,int excludedCoinType)
{
System.out.print("The coins exchanged are: ");
for (int coin : coinList)
{
if (excludedCoinType == coin)
{
continue;
}
else
{
System.out.print(totalCoinValue/coin + " x " + coin + "p,");
totalCoinValue = totalCoinValue%coin;
}
}
System.out.print(" with a reminader of " + totalCoinValue + "p");
}
解决方法
- 要让您的方法返回
String
,首先需要更改您的方法声明,以表明该方法实际上确实具有返回类型。 - 此外,与其打印输出结果,还不如直接构建一个String,并在方法完成后返回它。在以下示例中,我为此任务使用了
StringBuilder
。 - 最后,添加排除的硬币类型时,您缺少分支的输出。 (这里不需要
continue;
,因为一旦if
分支为true,循环中就不需要做其他事情了。)
更新示例:
public String multiCoinCalulator(int totalCoinValue,int excludedCoinType) {
StringBuilder sb = new StringBuilder();
sb.append("The coins exchanged are: ");
for (int coin : coinList) {
if (excludedCoinType == coin) {
sb.append(0 + " x " + coin + "p,");
} else {
sb.append(totalCoinValue / coin + " x " + coin + "p,");
totalCoinValue = totalCoinValue % coin;
}
}
sb.append(" with a remainder of " + totalCoinValue + "p");
return sb.toString();
}