C# 变量不';你不认识以前的转换吗?
我正在做一个控制台应用程序,用任意公式计算体重指数。问题在于开关(索引),Visual Studio一直告诉我开关不能使用double,即使我已经将索引转换为int。简单地使用Convert.ToInt32(索引)也不起作用。我错过了什么C# 变量不';你不认识以前的转换吗?,c#,C#,我正在做一个控制台应用程序,用任意公式计算体重指数。问题在于开关(索引),Visual Studio一直告诉我开关不能使用double,即使我已经将索引转换为int。简单地使用Convert.ToInt32(索引)也不起作用。我错过了什么 bool loop = true; int suly; double magassag; double index; string valasz; while (
bool loop = true;
int suly;
double magassag;
double index;
string valasz;
while (loop)
{
Console.WriteLine("Add meg a sulyodat");
suly = int.Parse(Console.ReadLine());
Console.WriteLine("Add meg a magassagodat");
magassag = double.Parse(Console.ReadLine());
magassag = magassag / 100;
index = suly / Math.Pow(magassag, 2);
index = Math.Round(index, 2);
Console.WriteLine(index + " a testtomeg indexed");
index = Convert.ToInt32(index);
switch (index)
{
case (0-5):
Console.WriteLine("asd1");
break;
case (6-10):
Console.WriteLine("asd");
break;
default:
Console.WriteLine("asd3");
break;
}
Console.WriteLine("Újra? igen/nem");
valasz = Console.ReadLine();
if (valasz == "igen")
loop = true;
else loop = false;
你不能在一个开关中使用double。指数仍然是双倍的
index=Convert.ToInt32(索引)代码>
这会将index的double值转换为int。然后将其指定给index(它是double),后者会隐式转换回double
intfoo=Convert.ToInt32(索引)
可以工作
甚至开关(转换为32(索引))
请注意:
1) 当需要变量时,应该声明它们。例如,suly
存在于of main中,而它只需要在while循环的范围内
2) 循环变量正在执行break
关键字已经执行的操作
3) Convert.ToInt32已经提供了舍入(这是使它不同于强制转换((int)index
)的原因之一)
4) 类似于magassag=double.Parse(Console.ReadLine());magassag=magassag/100代码>可以很容易地在一个语句中完成,并且可能会更清晰一些
5) 案例(0-5)表示案例(-5),案例(6-10)为-4。您希望使用if语句if(foo>=0 | | foo索引的数据类型是double。这就是为什么会出现此错误
尝试传递一个int,如下所示
switch(Convert.ToInt32(index))
调试你的程序总是一个好主意。
Visual Studio在这些情况下为您提供了很多帮助。
在对索引变量进行计算后设置断点
在“手表”窗口中,您可以检查类型
无论如何,作为一个解决方案,我同意Praveen Paulose的观点
switch(Convert.ToInt32(index))
索引
声明为双索引;
。将其更改为int index;
:
bool loop = true;
int suly;
double magassag;
int index; // not double
string valasz;
否则,赋值将把由Convert.ToInt32()
生成的int
值再次提升为double
,从而产生您看到的错误。另一种解决方案是完全丢弃索引,只在需要的地方进行转换:
switch( Convert.ToInt32(index))
只需将索引转换为int开关((int)index)case(6-10):
是case-4:
,可能不是您想要的。这应该是int
而不是double
;)啊,我的印象是它也会转换变量本身。嗯,有很多东西要学。谢谢大家:)@chrisha!哦,天哪,这是唯一一件不会出错的事。不,这样问比较容易。显然:——)