早上好
我有以下问题,我是一名学生,需要解决Visual Studio 2012中的一个练习。
我需要编写一个算法,请求50、100、200和500、1000和1000、2000、5000、10000、20000和50000的硬币数量并显示当天收集的总金额。
我必须在Windows窗体中执行此操作。 我尝试这样做,但是结果只显示结果的前3位。我以为这是错误的,但是后来我在计算器中做到了,如果仅考虑前3位数字,结果实际上是正确的。但是,我希望它显示操作的所有数字。
下面是我尝试过的事情。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void txtBil50_TextChanged(object sender, EventArgs e)
{
}
private void txbCalcu_Click(object sender, EventArgs e)
{
double mon1 = double.Parse(txtMo50.Text);
double mon2 = double.Parse(txtMo100.Text);
double mon3 = double.Parse(txtMo200.Text);
double mon4 = double.Parse(txtMo500.Text);
double mon5 = double.Parse(txtMo1000.Text);
double bil1 = double.Parse(txtBil1000.Text);
double bil2 = double.Parse(txtBil2000.Text);
double bil3 = double.Parse(txtBil5000.Text);
double bil4 = double.Parse(txtBil1000.Text);
double bil5 = double.Parse(txtBil20.Text);
double bil6 = double.Parse(txtBil50.Text);
double multi1 = mon1 * 50;
double multi2 = mon2 * 100;
double multi3 = mon3 * 200;
double multi4 = mon4 * 500;
double multi5 = mon5 * 1000;
double bill1 = bil1 * 1000;
double bill2 = bil2 * 2000;
double bill3 = bil3 * 5000;
double bill4 = bil4 * 10000;
double bill5 = bil5 * 20000;
double bill6 = bil6 * 50000;
double suma= mon1 + mon2 + mon3 + mon4 + mon5 + bil1 + bil2 + bil3 + bil4 + bil5 + bil6;
txtCal.Text = ""+suma ;
}
}
}
希望对您有所帮助
答案 0 :(得分:0)
我怀疑您的问题来自于您的求和:
mon1 + mon2 + mon3 + mon4 + mon5 + bil1 + bil2 + bil3 + bil4 + bil5 + bil6
您实际要汇总的位置:
multi1 + multi2 + multi3 + multi4 + multi5 + bill1 + bill2 + bill3 + bill4 + bill5 + bill6
此外,正如nabuchodonossor所指出的,此行:
double bil4 = double.Parse(txtBil1000.Text);
更可能是:
double bil4 = double.Parse(txtBil10000.Text);
// -------------------------------^^^^
同样,bil5
和bil6
分别用于输入txtBil20
和txtBil50
,而人们期望txtBil20000
和txtBil50000
。
@ V0ldek指出,例如,存储这些值的更简洁的方法可能是:
var coinCount = new Dictionary<int, double>();
coinCount[50] = double.Parse(txtMo50.Text);
coinCount[100] = double.Parse(txtMo100.Text);
// ...
var billCount = new Dictionary<int, double>();
billCount[1000] = double.Parse(txtBil1000.Text);
// ...
var coinAmount = new Dictionary<int, double>();
coinAmount[50] = 50*coinCount[50];
// ...
var billAmount = new Dictionary<int, double>();
billAmount[1000] = 1000*billCount[1000];
// ...
当然,在这里您甚至可以存储不同的硬币和纸币值,因此您不必使用上面的魔术数字。
Here是说明上面内容的可运行代码。