三个IF的问题,太不专业了。

zzlfe 2009-11-11 10:18:50


errorValue := xx - sss;
if errorValue> 0 then
if errorValue<2.5 then
begin
errorValue:= 6.5 + errorValue;
outputValue:= errorValue+ 7.0;
end;
if errorValue>=2.5 then
begin
outputValue := outputValue+1;
end;
end;


两个变量 errorValue-误差 outputValue-输出

根据 误差 得出 输出。

这是前辈留下的代码,小弟学的.net

如果第一个if执行了第二个也肯定会执行是吧,为什么写成这样?都让我怀疑两种语言的if不一样了。

是不是逻辑错误?但是因为 每次只加了1,所以没被发现?
...全文
98 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chhrsas 2009-11-11
  • 打赏
  • 举报
回复
我认为
if errorValue>=2.5 then
begin
outputValue := outputValue+1;
end;
这段代码只要保留 outputValue := outputValue+1; 这句就够了。
zzlfe 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 simonhehe 的回复:]
Delphi(Pascal) code
errorValue := xx- sss;if errorValue>0then
begin//????if errorValue<2.5thenbegin
errorValue:=6.5+ errorValue;
outp?-
[/Quote]


begin 漏了是我copy的错,呵呵 不好意思。
zzlfe 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
第一个执行后errorValue被改变了,所以又满足了下一个if
应该这样写,除非作者确实有根据第一个if去执行第二个if的要求
              if errorValue <2.5 then
              begin
                errorValue:= 6.5 + errorValue;
                outputValue:= errorValue+ 7.0;
              end
              else if errorValue>=2.5 then
              begin
                outputValue := outputValue+1;
              end;

[/Quote]

我也是这么认为的 ,但不敢轻易否定,应该是+1操作不太明显,这个错误没被发现
wintergoes 2009-11-11
  • 打赏
  • 举报
回复
最后多一个end;
zzlfe 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangpei2008 的回复:]
IF用的挺专业的
[/Quote]
怎个么专业法了?
haitao 2009-11-11
  • 打赏
  • 举报
回复
最后的end没有对应的begin
估计是第一个if后漏了begin
纯冰糖 2009-11-11
  • 打赏
  • 举报
回复
不用判断if errorValue> 0 then了
风之谷 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangpei2008 的回复:]
IF用的挺专业的
[/Quote]
----------
upp
liangpei2008 2009-11-11
  • 打赏
  • 举报
回复
IF用的挺专业的
bdmh 2009-11-11
  • 打赏
  • 举报
回复
第一个执行后errorValue被改变了,所以又满足了下一个if
应该这样写,除非作者确实有根据第一个if去执行第二个if的要求
if errorValue<2.5 then
begin
errorValue:= 6.5 + errorValue;
outputValue:= errorValue+ 7.0;
end
else if errorValue>=2.5 then
begin
outputValue := outputValue+1;
end;
simonhehe 2009-11-11
  • 打赏
  • 举报
回复

errorValue := xx - sss;
if errorValue> 0 then
begin //????
if errorValue<2.5 then
begin
errorValue:= 6.5 + errorValue;
outputValue:= errorValue+ 7.0;
end;
if errorValue>=2.5 then
begin
outputValue := outputValue+1;
end;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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