【求助】关于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以做全局变量定义。
...全文
269 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) { ..... }
内容概要:本文提出一种基于鱼鹰优化算法(OOA)优化的CNN-BiGUR-Attention混合模型,用于提升短期风电功率预测的精度与稳定性,采用Matlab实现代码仿真。该模型融合卷积神经网络(CNN)提取输入数据的局部空间特征,利用双向门控循环单元(BiGUR)捕捉风速、功率等时间序列的前后向动态依赖关系,并引入注意力机制自适应强化关键时间步的特征权重,从而增强模型对非平稳风电数据的表征能力;进一步,采用OOA算法对模型超参数进行全局寻优,有效提升模型收敛速度与泛化性能。研究基于实际风电场历史数据开展实验验证,结果表明,该方法相较传统模型在预测精度、鲁棒性和误差抑制方面表现更优,适用于高比例可再生能源接入背景下的电力系统调度需求。; 适合人群:从事新能源发电预测、电力系统优化调度、智能算法与深度学习融合应用等方向的科研人员及工程技术人员,尤其适合具备Matlab编程能力、熟悉时间序列建模与深度学习框架的研究者。; 使用场景及目标:①实现风电场短期功率高精度预测,支撑电网安全稳定调度与能量管理;②为深度学习模型结构设计与智能优化算法联合调参提供实践范例;③推动人工智能技术在可再生能源预测、智能电网运行等领域的落地应用。; 阅读建议:建议结合提供的Matlab代码深入理解CNN-BiGUR-Attention网络架构搭建、注意力机制实现方式及OOA优化流程,重点关注数据预处理、模型训练与参数调优细节,可通过替换不同风电数据集进行对比实验,进一步掌握模型迁移能力与适应性。

111,131

社区成员

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

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

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