建议和反馈

请填写你的反馈内容

问答 > 开发语言 > 问答详情
求助中

为什么不能在if语句中链接逻辑比较?10LK

如果满足以下条件之一,我将尝试执行代码块。再次,为清楚起见,如果满足任何条件,我希望代码执行(逻辑或链)。

当我在Matlab中键入以下代码时:

if strmatch(T,'Sd') || strmatch(T,'SuperDev') || ...
        strmatch(T,'lrnTrialVD') || strmatch(T,'lrnTrialVIS') || ...
        strmatch(T,'lrnTrialTARGET') || strmatch(T,'lrnTrialAUD')

我收到此错误:

??? Operands to the || and && operators must be convertible to logical scalar values.

有人可以告诉我我哪里出问题了吗?

/ blz

编辑:我使用了错误的功能。我要使用strcmp!


2021-01-13
0
请先登陆或注册

区块链论坛2021-01-13

我相信这是因为的返回值strmatch()是一个数组,而不是标量,并且||可能未在数组参数上定义。我面前没有MATLAB(只有Octave),但是[1, 2, 3] || [4, 5, 6, 7]对您有用吗?

另外,最好匹配一个(Sd|SuperDev|lrnTrial(VD|VIS|TARGET|AUD))更紧凑,更易读的正则表达式,并且只需要检查字符串“ T”一次(而不是六次)。

看起来像:

octave-3.2.4.exe:10> T1 = "Sd"T1 = Sdoctave-3.2.4.exe:11> T2 = "Lollipop"T2 = Lollipopoctave-3.2.4.exe:12> regexp(T1,"(Sd|SuperDev|lrnTrial(VD|VIS|TARGET|AUD))" )ans =  1octave-3.2.4.exe:13> regexp(T2,"(Sd|SuperDev|lrnTrial(VD|VIS|TARGET|AUD))" )ans = [](1x0)


投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 0
  • 3
  • 7
  • 5
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励