如何修复以下显示此错误的代码

时间:2019-10-14 12:47:06

标签: c#

下面的代码串联了double变量。

例如第一个数字是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();
    }
}

enter image description here

enter image description here

enter image description here

5 个答案:

答案 0 :(得分:1)

您尚未将2个整数加在一起,并且给字符串加上了其他2个数字。

字符串连接也很慢。您应该使用string.Format或字符串插值。

Console.WriteLine(string.Format("the result is {0}", num01 + num02) );

Console.WriteLine($"the result is {num01 + num02}");

答案 1 :(得分:1)

原因是正在添加表达式"the result is " + num01 + num02,其中包括string,这使整个操作具有连续性,而不是数字相加!如果+运算符的至少一个操作数是字符串,则将其串联。

此外,所有其他操作数都将转换为字符串,因此您的数字将转换为字符串,然后进行串联。

为避免这种情况,请强制执行操作顺序,因此首先要加上数字(例如,已经在其他答案中显示):"the result is " + (num01 + num02)

现在它将首先对两个数字求和,然后与给定的string连接。

答案 2 :(得分:0)

这是怎么回事:

 "the result is " + num01 + num02

我们有

  1. "the result is " + num01,即"the result is 1"(向double添加string
  2. "the result is 1" + num02,即"the result is 12"(向字符串中添加double

您能做什么:放入(..)并得到"the result is " + (num01 + num02)

  1. num01 + num0,即3(加上两个double
  2. "the result is " + 3,即"the result is 3"(向double添加string

因此您可以放(...)

 Console.WriteLine("the result is " + (num01 + num02));

或(更好的方法)使用字符串插值,然后让.net为您计算总和:

 Console.WriteLine($"the result is {num01 + num02}");

或格式:

 Console.WriteLine("the result is {0}", num01 + num02);

答案 3 :(得分:0)

如果在数字的总和后加上括号,则代码可以正常工作

        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

答案 4 :(得分:0)

  

正在像2 + 3这样添加它们; 23

这是因为您在将+2视为字符串并且使用字符串3的情况下使用+始终执行串联,因此结果{{ 1}}

  

您需要做什么来解决问题?

23
  

以上解决方案为何起作用?

简短答案 操作员优先 。括号具有更高的优先级,并且首先被评估。发生这种情况时,将num01和num02视为数字并进行加法运算。现在,该总和值被视为Console.WriteLine("the result is " + (num01 + num02) ); 中的字符串+