C# 在第16行引发异常 使用系统; 名称空间Rndom { 类主类 { 公共静态void Main(字符串[]args) { 开始: Random obj=新的Random(); int num1=obj.Next(1,9); int num2=obj.Next(10,21); WriteLine(“两个唯一数字的总和\n”+num1+“”+num2+“”+(num1+num2)); char ch; Console.WriteLine(“如果要继续,请按y”); ch=Convert.ToChar(Console.ReadKey());//
而不是C# 在第16行引发异常 使用系统; 名称空间Rndom { 类主类 { 公共静态void Main(字符串[]args) { 开始: Random obj=新的Random(); int num1=obj.Next(1,9); int num2=obj.Next(10,21); WriteLine(“两个唯一数字的总和\n”+num1+“”+num2+“”+(num1+num2)); char ch; Console.WriteLine(“如果要继续,请按y”); ch=Convert.ToChar(Console.ReadKey());//,c#,unity3d,C#,Unity3d,而不是 using System; namespace Rndom { class MainClass { public static void Main(string[] args) { start: Random obj = new Random(); int num1 = obj.Next(1, 9); int num2 = obj.Next(1
using System;
namespace Rndom
{
class MainClass
{
public static void Main(string[] args)
{
start:
Random obj = new Random();
int num1 = obj.Next(1, 9);
int num2 = obj.Next(10,21);
Console.WriteLine("sum of two unique numbers\n"+num1+" "+num2+" "+(num1+num2));
char ch;
Console.WriteLine("If wannt to continue, press y");
ch = Convert.ToChar(Console.ReadKey()); // <- I have exception thrown here
if(ch=='y')
{
goto start;
}
else
{
Console.WriteLine("press any key to terminate");
Console.ReadKey();
}
}
}
}
你应该把它当作
ch = Convert.ToChar(Console.ReadKey());
由于由
Console.ReadKey()
返回的ConsoleKeyInfo
实例不能直接转换为char
第16行在哪里?这与Unity3D有什么关系?还会引发什么异常?ch=Console.ReadKey().KeyChar;
而不是ch=Convert.ToChar(Console.ReadKey())
转换的对象是什么类型的?不确定这与Unity有什么关系,但是当你发现自己在使用Main
函数、Console.WriteLine
和Console.ReadKey
时,你应该知道你没有正确使用Unity。谢谢你,先生!但是我对c非常陌生,你能解释一下吗关于您的正确答案!ConsoleKeyInfo实例可以转换为整数或任何其他类型吗?@Adarsh Kumar:不;ConsoleKeyInfo
不能通过Convert.ToInt32
转换为整数-int
;通常我们使用Convert
与实现IConvertible
接口的类型一起使用(几乎)所有其他情况下,您应该在casech=Convert.ToChar(Console.ReadLine());//我使用了此代码而不是您的代码,它工作得非常好!@Adarsh Kumar:ch=Convert.ToChar(Console.ReadLine());
与此不同:您正在阅读一行(例如“bla bla bla bla”
)等待按enter键(这将开始一个新行),然后尝试将该行(“bla bla”
)共转换为char,此时会出现格式异常
,消息为“字符串必须正好有一个字符长”。
。如果您喜欢Console.ReadLine()
可以这样说:ch=Console.ReadLine()[0]
或者检查输入的Length==1
ch = Console.ReadKey().KeyChar;