C#从ReadLine变量字符串到Int
我有一条语句,然后用户必须输入一个键。C#从ReadLine变量字符串到Int,c#,C#,我有一条语句,然后用户必须输入一个键。 如果他们进入其中一个,他们会做一件事,另一件事,另一件事 从我的Readline我有一个问题,在哪里 错误CS0029:无法将类型“int”隐式转换为“string” 这有什么问题,因为我认为我有: choice = Convert.ToInt32(Console.ReadLine()); 编辑 所以现在我使用了史蒂夫的答案(如下) 这将抛出以下错误消息: CS0029:无法将类型“int”隐式转换为“bool” 对于这一行,我认为: case 1:
如果他们进入其中一个,他们会做一件事,另一件事,另一件事 从我的Readline我有一个问题,在哪里 错误CS0029:无法将类型“int”隐式转换为“string” 这有什么问题,因为我认为我有:
choice = Convert.ToInt32(Console.ReadLine());
编辑
所以现在我使用了史蒂夫的答案(如下)
这将抛出以下错误消息:
CS0029:无法将类型“int”隐式转换为“bool”
对于这一行,我认为:
case 1:
// action for choice == 1
if(choice = 1|2)
Console.WriteLine("Choice {0} Selected",choice);
break;
看起来你有:
string choice;
choice = Convert.ToInt32(Console.ReadLine());
由于Convert.ToInt32
返回一个int
,您需要将选项的声明类型更改为int
(或创建一个新变量)
该错误显然是由于不正确地将整数赋值给字符串变量造成的。这可以通过多种方式解决,但这里最大的问题是你不能阻止你的用户键入任何东西(字母、字母、制表符),盲目地将用户键入的任何东西转换成整数从一开始就是注定的
在这种情况下,您应该始终进行防御性编程,并使用适当的转换方法
int choice;
if(!Int32.TryParse(Console.ReadLine(), out choice))
Console.WriteLine("You should enter a integer number");
else
{
switch(choice)
{
case 1:
// action for choice == 1
break;
case 2:
// action for choice == 2
break;
default:
// action for any other integer number
break;
}
}
将尝试将输入转换为整数。如果无法转换输入,则返回false,否则返回true
编辑
在编辑之后,这一行不符合您的想法
if(choice = 1|2)
这一行在值1和值2之间按位或生成值3,然后将值3分配给变量选项if(3)
不是if语句所要求的布尔表达式
看
顺便说一句,您不需要这些代码,因为在案例1的开关中,您已经知道此时选择的值,并且可以直接编写
Console.WriteLine("Choice {0} Selected",choice);
或者,当choice==1时,您需要将choice
的类型更改为int
。什么类型是choice
?如果错误无法从int转换为string,则问题可能是choice
被声明为字符串。如果是字符串,只需执行choice=Console.ReadLine()代码>如果它是一个int,上面的内容应该可以正常工作。choice是变量名,上面声明为string choice;这就是你的问题,将字符串选择
更改为int选择
确保你的选择
是一个int
。好吧,这样就行了,但现在我的if语句不行,我得到了以下信息:错误CS0029:无法隐式地将类型“int”转换为“bool”@FettJ-请将信息添加到你的问题中。好吧,这样就行了,但现在我得到了这样的结果:错误CS0029:无法隐式地将类型“int”转换为“bool.Where”?在上面的代码中,没有任何东西试图将int转换为bool。它在下面作为if语句参数:if(choice=1 | 2)Console.WriteLine(“choice{0}Selected”,choice);请如果你有一个新的问题,那么发布一个新的问题。如果本页中的答案解决了您的问题,请查看,但它与上一个问题相关,因此作为选择,它会抛出一条错误消息,告诉我它无法将int转换为bool,尽管事实并非如此。
Console.WriteLine("Choice {0} Selected",choice);