C# 如何修复显示此错误的以下代码
下面的代码连接双变量 例如,第一个数字是C# 如何修复显示此错误的以下代码,c#,C#,下面的代码连接双变量 例如,第一个数字是2 第二个是3 它是这样添加的2+3 23 using System; public static class Program { public static void Main() { double num01; double num02; Console.WriteLine("Add"); Console.Write("type a number: ");
2
第二个是3
它是这样添加的2+3代码>
23
using System;
public static class Program
{
public static void Main()
{
double num01;
double num02;
Console.WriteLine("Add");
Console.Write("type a number: ");
num01 = Convert.ToInt32(Console.ReadLine());
Console.Write("type another number: ");
num02 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the result is " + num01 + num02);
Console.ReadKey();
}
}
您没有将两个整数相加,而是将一个字符串加上了另外两个数字的后缀
字符串连接也很慢。您应该使用string.Format或字符串插值
Console.WriteLine(string.Format("the result is {0}", num01 + num02) );
或
发生了什么事:为了
"the result is " + num01 + num02
我们有
“结果是”+num01
,这是“结果是1”
(向字符串添加double
)
“结果是1”+num02
,这是“结果是12”
(向字符串添加双精度
)
你能做什么:把(…)
放到“结果是”+(num01+num02)
:
num01+num0
这是3
(添加两个double
s)
“结果是”+3
,这是“结果是3”
(向字符串添加double
)
所以你可以把(…)
或者(更好的方法)使用字符串插值,让.net为您计算总和:
Console.WriteLine($"the result is {num01 + num02}");
或格式:
Console.WriteLine("the result is {0}", num01 + num02);
如果将括号添加到数字的总和,则代码可以正常工作
double num01;
double num02;
Console.WriteLine("Add");
Console.Write("type a number: ");
num01 = Convert.ToInt32(Console.ReadLine());
Console.Write("type another number: ");
num02 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the result is " + (num01 + num02));
Console.ReadKey();
但毫无疑问,最佳实践是:
string.Format
“它是这样添加的2+3;23”
这是因为您使用的+
上下文将2
和3
视为字符串,并且字符串+
始终执行串联,因此结果23
using System;
public static class Program
{
public static void Main()
{
double num01;
double num02;
Console.WriteLine("Add");
Console.Write("type a number: ");
num01 = Convert.ToInt32(Console.ReadLine());
Console.Write("type another number: ");
num02 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the result is " + num01 + num02);
Console.ReadKey();
}
}
你需要做什么来解决问题?
为什么上述解决方案有效?
简短回答:运算符优先级。括号具有更高的优先级,并首先求值。当发生这种情况时,num01和num02被视为数字并进行加法。现在这个和值被当作+
中的一个字符串,结果是“
原因是表达式”,结果是“+num01+num02
是加法,它包括字符串
,它使整个操作浓缩,而不是数字相加!如果+
运算符的至少一个操作数是字符串,则它将使其串联
此外,每隔一个操作数都会转换为字符串,所以数字会转换为字符串,然后进行串联
为了避免这种情况,强制操作顺序,因此首先添加数字,例如(已在其他答案中显示):“结果是”+(num01+num02)
现在,它将首先对两个数字求和,然后与给定的
字符串
连接。当在“字符串”中使用加号运算符时,加号运算符不会将数字相加。您已经有效地编写了“结果是12”Console.WriteLine(“结果是”+(num01+num02))
那么Neil我如何添加下面的代码请告诉我如果num01
和num02
是double
s为什么要使用Convert.ToInt32
?尝试Convert.ToDouble
然后可以输入1.23和4.56Console.WriteLine($“结果是{num01+num02}”)代码>抛出错误意外字符$
您正在使用哪个版本的Visual Studio?
string.Format
Console.WriteLine("the result is " + (num01 + num02) );