对于我的学校作业,我必须做一个电影票务池,计算价格,折扣,税收等。 我需要显示总计,折扣,然后折扣后的总数。 我试图做总计 - 得到答案的折扣,但它不会让我和我的想法来解决这个错误。
以下是代码:
GroupLbl.Text = "Total discount: " + ((Kids * Price) * 0.75 + (Adults * Price) + (Seniors * Price) * 0.5) * 0.1;
DiscountLbl.Text = "Total after discount: " +TotalLbl.Text - GroupLbl.Text;
运算符' - '不能应用于'string'和'string'
类型的操作数
有谁知道这个问题?
非常感谢您的帮助!
答案 0 :(得分:3)
问题是你试图减去字符串,这是不可能的,而不是你想要的。您的子操作必须使用正确的类型完成,在这种情况下可能是decimal
。因此,您必须将字符串值解析为十进制,减去它们,然后将结果转换为字符串以显示它。你应该做这样的事情:
DiscountLbl.Text= "Total after discount: "
+ (decimal.Parse(TotalLbl.Text) - decimal.Parse(GroupLbl.Text)).ToString();
修改强>
正如Steve和BviLLe_Kid指出的那样,由于输入来自用户并且可能包含错误的值,因此您必须使用TryParse
而不是Parse
。所以代码看起来像这样:
decimal total;
decimal group;
if (decimal.TryParse(TotalLbl.Text,out total) && decimal.TryParse(GroupLbl.Text,out group))
{
string DiscountLbl = "Total after discount: " + (total-group).ToString();
}
答案 1 :(得分:1)
您需要在减法之前将字符串转换为int。
使用类似int x = Convert.ToInt32(theString)
的内容。
答案 2 :(得分:1)
您必须将文字转换为双重
DiscountLabel.Text = "Total after discount:" + (Convert.ToDouble(TotalLbl.Text) - Convert.ToDouble(GroupLbl.Text)).ToString();
答案 3 :(得分:1)
你可以这样做:
//Since you are dealing with decimals:
string strResult = Convert.ToString(Convert.ToDouble(textBox1.Text) - Convert.ToDouble(textBox2.Text));
不要忘记将您的问题与您的代码一起正确发布,以便此处的人员可以轻松了解并为您提供帮助。有关详细信息,请参阅:https://stackoverflow.com/help/how-to-ask
答案 4 :(得分:1)
正如其他人所指出的那样,你需要先将字符串转换为整数才能减去。
另外,作为一般规则,请密切注意错误消息:
运算符' - '不能应用于'string'和'string'
类型的操作数
在这种情况下,问题正是编译器所说的:' - '不能应用于字符串。
请记住,某些操作仅对某些类型有意义。如果您尝试对字符串进行算术运算,请考虑一些边缘情况的示例:
正如您所看到的,当您尝试对字符串执行算术运算时,编译器没有通用的方法来确定您打算做什么。特别是在这种情况下,对以自动方式推理程序的能力存在严格限制(例如,参见halting problem)。
还有一件事 - 看看GroupLbl.Text
:
GroupLbl.Text = "Total discount: " + ((Kids * Price) * 0.75 + (Adults * Price) + (Seniors * Price) * 0.5) * 0.1;
这就像“总折扣:10.0”。 “10.0” - “总折扣:10.0”是什么意思?最好将总折扣存储在单独的双倍或十进制变量中。
double discount = ((Kids * Price) * 0.75 + (Adults * Price) + (Seniors * Price) * 0.5) * 0.1;
GroupLbl.Text = "Total discount: " + discount.ToString();
double totalAfterDiscount = double.Parse(TotalLbl.Text) - discount;
DiscountLbl.Text = "Total after discount: " + totalAfterDiscount.ToString();
答案 5 :(得分:0)
您正在尝试减去两个包含文本的标签控件(其中一些是数字,我从图像中获取的是您想要的)。你不能这样做。
提供除图像之外的代码。