不能隐式转换类型'string'& # 39; int # 39;(c#)

本文关键字:int 不能 转换 类型 string | 更新日期: 2023-09-27 18:07:10

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = int.Parse(Console.ReadLine());
            switch (i)
            {
                case 1:
                    for (i = 1; i <= 10; i++)
                    {
                        Console.WriteLine(1+"*"+i+"="+i*1);
                    }
                    break;
            }
            Console.ReadKey();
        }
    }
}

不能隐式转换类型'string'& # 39; int # 39;(c#)

从帖子的标题来看,我猜你的错误来自于你正在阅读控制台输入的地方,而不是来自于你正在编写结果的地方(你还没有很清楚错误是在哪里抛出的)。堆栈跟踪可能有用)。

当你获取用户输入来解析时,你最好将值赋给一个字符串,然后使用TryParse,而不是仅仅使用parse。

String inString = Console.ReadLine();
int i = 0;
bool parsedNumber = Int32.TryParse(inString, out i);
if (parsedNumber) {
    //Do Something with your lovely new Int32
}

也可以使用try/catch块。

String inString = Console.ReadLine();
try {
    i = Int32.Parse(inString);
    //Do something with your int here
} catch (Exception ex) {
    //Not a number
}

如果我理解了你的问题,你希望你的输出看起来像这样…

1*1 = 1

1*2 = 2

…等。

如果是,您最好计算总和的乘积,并使用字符串构建器将输出组合在一起。

for (i = 1; i <= 10; i++)
{ 
    int res = i * 1;
    StringBuilder sb = new StringBuilder();
    sb.Append("1 * ").Append(i).Append(" = ").Append(res);
    Console.WriteLine(sb.ToString());
}

Mark对WriteLine使用重载的回答也是完全有效的,就像下面对String的使用一样。格式的

String outString = String.Format("1*{0}={1}", i, i*1);
Console.WriteLine(outString);

使用Console的重载。Mark建议的WriteLine是更简洁的代码,但是使用了String。格式,您可以在写入字符串之前检查字符串的值。

有几种方法可以实现这种格式化。根据你想要达到的目标,其中一个可能比另一个更合适。

据我所知,您可以使用此代码转换为int。(未针对您的示例进行测试)。

 switch (i)
    {
        case 1:
            for (i = 1; i <= 10; i++)
            {
                int Val = Int32.Parse(1+"*"+i+"="+i*1);
                Console.WriteLine(Val);
            }
            break;
    }
    Console.ReadKey();
}

或者更好的,你可以使用(Int32。TryParse),如果转换成功则返回true。

switch (i)
    {
        case 1:
            for (i = 1; i <= 10; i++)
            {
              int Val;
              if (Int32.TryParse(1+"*"+i+"="+i*1, out Val))
               {
                // TryParse returns true if the conversion succeeded.
               }
            }
            break;
    }
    Console.ReadKey();
}
相关文章: