switch (remainder){ case 0: return 0x00; case 1: return 0x01; case 2: return 0x02; default: return 0x03; }出现错误Cannot return a value from a method with void result type
时间: 2024-02-10 22:17:23 浏览: 61
根据你提供的代码,你的问题出现在方法的返回类型与你的实际需求不匹配。你的代码中,方法返回了一个整形值,但是它的方法返回类型却是void,这是不符合语法规则的。因此,你需要将方法的返回类型修改为int类型,来匹配你的实际需求。修改后的代码如下:
```
public int getResult(int remainder) {
switch (remainder) {
case 0:
return 0x00;
case 1:
return 0x01;
case 2:
return 0x02;
default:
return 0x03;
}
}
```
这样,你就可以正常使用该方法,并且它会返回一个整形值。
相关问题
recvByteCount += 1; showRecvLen(recvByteCount); //帧序号 int frameNumber =Integer.parseInt(bleDataArr[0]); int remainder = frameNumber % 10; //系统状态 byte systemState =(byte) Integer.parseInt(bleDataArr[1]); //寻北进度 byte northProgress =(byte) Integer.parseInt(bleDataArr[2]); //航向角 float headingAngle =Integer.parseInt(bleDataArr[3]); //航向角 float pitchAngle =Integer.parseInt(bleDataArr[4]); //俯仰角 float rollAngle = Integer.parseInt(bleDataArr[5]); //实时数据 public int getResult(int remainder) { switch (remainder) { case 0: return 0x00; case 1: return 0x01; case 2: return 0x02; default: return 0x03; } } ////todo:定义一个数组if判断 ProtocolData protocolData = new ProtocolData(frameNumber, systemState, northProgress, headingAngle, pitchAngle, rollAngle, remainder); String dataStr = protocolData.toString();改错对这段i代码
根据你提供的代码,我看到了一些问题:
1.在方法外部调用getResult方法。你不能在方法外部调用getResult方法。你需要将getResult方法放到方法内部,或者在方法外部单独定义一个getResult方法。
2.在定义ProtocolData时,需要将getResult方法的返回值作为数组下标。你需要使用获取到的remainder值来获取getResult方法的返回值,并将其作为数组下标。代码应该像这样:
```
int result = getResult(remainder);
ProtocolData protocolData = new ProtocolData(frameNumber, systemState, northProgress, headingAngle, pitchAngle, rollAngle, result);
```
3.你需要在方法外部定义一个数组,用于存储getResult方法的返回值。你可以使用如下代码在方法外部定义一个int类型的数组:
```
int[] resultArr = new int[]{0x00, 0x01, 0x02, 0x03};
```
4.你需要使用获取到的remainder值来获取数组中的值。你可以使用如下代码来获取数组中的值:
```
int result = resultArr[remainder];
```
根据上述修改,你的代码应该像这样:
```
recvByteCount += 1;
showRecvLen(recvByteCount);
//帧序号
int frameNumber = Integer.parseInt(bleDataArr[0]);
int remainder = frameNumber % 10;
//系统状态
byte systemState = (byte)Integer.parseInt(bleDataArr[1]);
//寻北进度
byte northProgress = (byte)Integer.parseInt(bleDataArr[2]);
//航向角
float headingAngle = Integer.parseInt(bleDataArr[3]);
//俯仰角
float pitchAngle = Integer.parseInt(bleDataArr[4]);
//横滚角
float rollAngle = Integer.parseInt(bleDataArr[5]);
//获取getResult方法的返回值
int[] resultArr = new int[]{0x00, 0x01, 0x02, 0x03};
int result = resultArr[remainder];
ProtocolData protocolData = new ProtocolData(frameNumber, systemState, northProgress, headingAngle, pitchAngle, rollAngle, result);
String dataStr = protocolData.toString();
```
取余后 switch case判断序号 字段 意义 1 0x00 电池电压(百分比) 2 0x01 气压高度 3 0x02 产品版本号 4 0x03 软件版本号 5 0x04 预留1这些字段
你可以使用以下代码对取余后的结果进行 switch case 判断:
```
switch (remainder) {
case 0:
// 序号为 0,表示电池电压(百分比)
// 处理相应的逻辑
break;
case 1:
// 序号为 1,表示气压高度
// 处理相应的逻辑
break;
case 2:
// 序号为 2,表示产品版本号
// 处理相应的逻辑
break;
case 3:
// 序号为 3,表示软件版本号
// 处理相应的逻辑
break;
case 4:
// 序号为 4,表示预留1
// 处理相应的逻辑
break;
default:
// 其他情况,可以进行相应的异常处理
break;
}
```
在每个 case 中,你可以根据具体的需求,处理相应的逻辑。注意,如果取余的结果不在 0~4 的范围内,将会执行 default 中的代码,可以在其中进行相应的异常处理。
阅读全文