我试图创建一个程序,显示推算金额以及ATM可以分配的10美元和1美元钞票的数量,但它不会显示正确数量的1美元钞票。
int amount = int.Parse(txtAmount.Text);
int tenNotes=0, oneNotes=0;
CalculateNotes(amount, ref tenNotes, ref oneNotes);
private void CalculateNotes( int amount, ref int tenNotes, ref int OneNotes)
{
tenNotes = amount /10;
OneNotes = amount - amount % 10;
rtbDisplay.AppendText("Ammount is " + amount + "Ten notes is" + tenNotes + "One notes is" + OneNotes);
}
这是我尝试过不同的1美元钞票计算方法的输出,但它不起作用。 我应该使用而不是ref或我的计算中是否有错误?谢谢你的帮助。
答案 0 :(得分:2)
你应该改变这一行
OneNotes = amount - amount % 10;
到这个
OneNotes = amount - (tenNotes * 10);
请重新考虑使用int.Parse读取文本框中的输入。如果您的用户键入无效的整数值,则会出现异常。使用Int32.TryParse
可以轻松避免此异常最后,我建议您使用out关键字代替参数 见When to use ref vs out
答案 1 :(得分:2)
史蒂夫给出的解决方案的替代方案,您也可以执行以下操作:
变化:
OneNotes = amount - amount % 10;
为:
OneNotes = amount % 10;
其他替代 - 应该注意的是,您尝试执行的操作已经是System.Math库中的预先存在的功能。因此,您可以替换以下代码块:
tenNotes = amount /10;
OneNotes = amount - amount % 10;
使用:
tenNotes = Math.DivRem(amount, 10, out OneNotes);