【求助】关于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以做全局变量定义。
...全文
185 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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) { ..... }
按下矩阵按键在数码管上逐个显示对应的键值,键值如下: S1-S4:0-3 S4-S8:4-7 S9-S12:8-B S13-S16:C-F */ #include #define GPIO_DIG P0 #define GPIO_KEY P1 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_CODE[17]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 unsigned char KeyValue; //用来存放读取到的键值 unsigned char KeyState; //记录按键的状态,0没有,1有 unsigned char DisplayData[8]; //用来存放要显示的8位数的值 void Delay10ms(); //延时10ms void KeyDown(); //检测按键函数 void DigDisplay(); //动态显示函数 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { KeyState=0; while(1) { KeyDown(); if(KeyState==1) { DisplayData[7]=DisplayData[6]; DisplayData[6]=DisplayData[5]; DisplayData[5]=DisplayData[4]; DisplayData[4]=DisplayData[3]; DisplayData[3]=DisplayData[2]; DisplayData[2]=DisplayData[1]; DisplayData[1]=DisplayData[0]; DisplayData[0]=DIG_CODE[KeyValue]; KeyState=0; } DigDisplay(); } } /******************************************************************************* * 函 数 名 : DigDisplay * 函数功能 : 使用数码管显示 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void DigDisplay() { unsigned char i; unsigned int j; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//显示第5位 case(6): LSA=0;LSB=1;LSC=1; break;//显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;//显示第7位 } GPIO_DIG=DisplayData[i];//发送段码 j=10; //扫描间隔时间设定 while(j--); GPIO_DIG=0x00;//消隐 } } /******************************************************************************* * 函 数 名 : KeyDown * 函数功能 : 检测有按键按下并读取键值 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void KeyDown(void) { unsigned int a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f) { Delay10ms(); a++; a=0; if(GPIO_KEY!=0x0f) { KeyState=1;//有按键按下 //测试列 GPIO_KEY=0X0F; // Delay10ms(); switch(GPIO_KEY) { case(0X07): KeyValue=0;break; case(0X0b): KeyValue=1;break; case(0X0d): KeyValue=2;break; case(0X0e): KeyValue=3;break; // default: KeyValue=17; //检测出错回复17意思是把数码管全灭掉。 } //测试行 GPIO_KEY=0XF0; Delay10ms(); switch(GPIO_KEY) { case(0X70): KeyValue=KeyValue;break; case(0Xb0): KeyValue=KeyValue+4;break; case(0Xd0): KeyValue=KeyValue+8;break; case(0Xe0): KeyValue=KeyValue+12;break; // default: KeyValue=17; } while((a<500)&&(GPIO_KEY!=0xf0)) //按键松手检测 { Delay10ms(); a++; } a=0; } } } /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }

111,098

社区成员

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

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

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