问题描述
当您在参数中键入星座时,示例为“ Leo”或“ LEO”,输出应显示为“此用户是LEO”,但当我这样做时,只会显示单词“ INVALID”。
有人可以帮助我,这样当我尝试键入特定单词时,它将出现在条件说明中吗?
这是我的代码:
dnspython
解决方法
使用以下代码行:
elseif zodiac = 'Leo''LEO'.
您正在测试变量zodiac
是否等于两个串联词“ Leo'LEO
”,并且两个引号之间只有一个引号。您没有测试“狮子座”或“狮子座”。
相反,您应该按照格雷格所说:
elseif zodiac = 'Leo' OR zodiac = 'LEO'.
如果您想了解所有可能的语法,请阅读官方的ABAP documentation about Logical Expressions(NOT,OR,AND,EQUIV等)
我可以添加一些有关您的特定算法的信息:
- 在评估IF ... ELSEIF链中的同一变量时,可以使用CASE...WHEN construct或构造函数运算符
SWITCH
。 - 我猜您正在尝试忽略字母大小写,可以通过使用
to_upper
或旧的TRANSLATE...TO UPPER CASE
将输入更改为大写,然后将其与仅进行比较来简化代码大写单词。 - 通过使用两个构造函数
SWITCH
或COND
中的任何一个,您的评估也可以简化为较短的形式。 - 如果重复文本“用户是”,则可以在变量中定义一次,然后再将其连接起来,例如使用String Template(
|...{ ... }...|
)。
ABAP版本> = 7.40的最终代码示例:
DATA(zodiac_input_evaluation) = SWITCH string( to_upper( zodiac )
LET intro = `The user is` IN
WHEN 'CAPRICORN' THEN |{ intro } a capricorn|
WHEN 'AQUARIUS' THEN |{ intro } an Aquarius|
WHEN 'PISCES' THEN |{ intro } a PISCES|
WHEN 'ARIES' THEN |{ intro } an ARIES|
WHEN 'TAURUS' THEN |{ intro } a TAURUS|
WHEN 'GEMINI' THEN |{ intro } a GEMINI|
WHEN 'CANCER' THEN |{ intro } a CANCER|
WHEN 'LEO' THEN |{ intro } a LEO|
WHEN 'VIRGO' THEN |{ intro } a VIRGO|
WHEN 'LIBRA' THEN |{ intro } a LIBRA|
WHEN 'SCORPIO' THEN |{ intro } a SCORPPIO|
WHEN 'SAGITTARIUS' THEN |{ intro } a SAGITTARIUS|
ELSE 'Invalid' ).
WRITE : / zodiac_input_evaluation.
,
相反:
if zodiac = 'Capricorn''CAPRICORN'
你应该有:
if zodiac = 'Capricorn' or zodiac = 'CAPRICORN'