【求助】关于switch case 的问题

cokefenta 2015-07-18 09:09:57
本人刚开始学习C#,在Unity中想实现如下功能,控制汽车的档位,在不同档位下实现不同的速度,具体的代码如下:
//定义档位函数
void Gears()
{if(Input.GetKeyDown(KeyCode.Q))
{
if(gears<8)
{
gears++;
}
}else if(Input.GetKeyDown(KeyCode.E))
{
if (gears >-8)
{
gears--;
}
}
Debug.Log("gears=" + gears);
switch (gears)
{
case 8:
speed >= 70.0f && speed <= 80.0f;
break;

}
}
但是代码中出现了一下问题:

求解答,为什么 speed >= 70.0f && speed <= 80.0f; 会出错。

注:speed以做全局变量定义。
...全文
178 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南小鱼 2015-07-19
  • 打赏
  • 举报
回复
bool flag = speed >= 70.0f && speed <= 80.0f;
这堆玩意要有一个布尔类型的变量接收
Imcx 2015-07-19
  • 打赏
  • 举报
回复
应该根据速度判断档位吧
空中的羽毛 2015-07-18
  • 打赏
  • 举报
回复
你的那段不是执行语句,case下面是你要执行的操作,如果你是判断,要加上if之类的,进行判断操作
全栈极简 2015-07-18
  • 打赏
  • 举报
回复
要是一个语句,这不是语句,只返回true or false. 应该: bool flag= speed >= 70.0f && speed <= 80.0f; 或者flag拿到外面定义
SecretGarden 2015-07-18
  • 打赏
  • 举报
回复
case 关键字后面应该是一个执行语句,例如赋值、函数调用等。但你只是给出了一个表达式,所以会报错。
「已注销」 2015-07-18
  • 打赏
  • 举报
回复
贴全部代码,看不懂你想表达什么,这个完全都是编译没通过,你这个返回的是一个BOOL类型的结果, 就好像是case 8: true;你觉得意义吗,应该是case 8: bool a =true;你说对吗?
道玄希言 2015-07-18
  • 打赏
  • 举报
回复
引用 7 楼 u010641353 的回复:
我是想将全局变量speed的变量区间限制在70-80之间, 如果在外部事先定义一个布尔值b,是否可以这样写: case8: b = true; if (b) { speed >= 70.0f && speed <= 80.0f; }
不能这么写, 你限制speed 在 区间 if (speed > 80.0f) { speed = 80.0f;} if (speed < 70.0f) { speed = 70.0f;}
xboxeer 2015-07-18
  • 打赏
  • 举报
回复
speed >= 70.0f && speed <= 80.0f; 这是个不完整的语句 这是个不完整的语句 这是个不完整的语句 就相当于你要说 我叫XXX 你就说了个 我叫 下面就没了 下面就没了 下面就没了
cokefenta 2015-07-18
  • 打赏
  • 举报
回复
引用 5 楼 findcaiyzh 的回复:
你那个不是一个完整的语句,可以复制给一个变量,或者放到if里面。 和case 没有关系 bool bFlag = speed >= 70.0f && speed <= 80.0f; 或者 if ( speed >= 70.0f && speed <= 80.0f) { ..... }
我是想将全局变量speed的变量区间限制在70-80之间, 如果在外部事先定义一个布尔值b,是否可以这样写: case8: b = true; if (b) { speed >= 70.0f && speed <= 80.0f; }
cokefenta 2015-07-18
  • 打赏
  • 举报
回复
引用 1 楼 yangliweng2 的回复:
贴全部代码,看不懂你想表达什么,这个完全都是编译没通过,你这个返回的是一个BOOL类型的结果, 就好像是case 8: true;你觉得意义吗,应该是case 8: bool a =true;你说对吗?
case 关键字后面应该是一个执行语句,我的意思是判断gear的值,,当gear的值为8的时候不是就执行case后面的语句嘛? 我想使前面定义的变量speed 处在0至80之间。
宝_爸 2015-07-18
  • 打赏
  • 举报
回复
你那个不是一个完整的语句,可以复制给一个变量,或者放到if里面。 和case 没有关系 bool bFlag = speed >= 70.0f && speed <= 80.0f; 或者 if ( speed >= 70.0f && speed <= 80.0f) { ..... }

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧