通过循环获取有效的枚举数据类型输入
Taking Valid Enumeration DataType Input via Loop
我想从用户那里获取有效的枚举数据类型输入。我试过这样。 FPC 编译器表示只能使用“<>”关系运算符比较二进制数据类型。也请在 'Cham_Cham' 中说明我可以使用 Space 而不是 '_'
我不会选择 OOP。如果这是唯一的方法,那么我会去。
(在我看来,它可以不使用 OOP 方式来完成。就像不使用 try-catch 一样。)
program Enum
type Food = (Pizza, Biryani, Halwa, Cham_Cham)
var Choice: Food;
begin
WriteLn('Pizza, Biryani, Halwa, Cham_cham');
repeat
WriteLn('Which Food Do you want to eat?');
Read(Choice);
Until Choice <> Food
WriteLn('You can eat: ' + Choice);
end.
Until Choice <> Food
Food
是一种类型。 Choice
是一个值。您不能将类型与值进行比较。这就是错误消息告诉您的内容。如果要将输入的值与某个值进行比较,它必须是 Food
类型的另一个值。
关于你的另一个问题,语言中的名称不能包含空格。
您可能需要重新考虑如何获得此输入。就目前而言,您的代码希望用户输入序数值。我怀疑您希望用户必须输入数字。此外,这使他们能够输入无效的序数值,即超出类型范围的序数值。
更好的方法可能是要求用户输入文本,然后让您的代码将文本与食物名称进行比较,并适当地分配序号。但我真的不知道你的程序想要达到什么目的,而且它超出了这个问题的范围,无法多说。
我想从用户那里获取有效的枚举数据类型输入。我试过这样。 FPC 编译器表示只能使用“<>”关系运算符比较二进制数据类型。也请在 'Cham_Cham' 中说明我可以使用 Space 而不是 '_'
我不会选择 OOP。如果这是唯一的方法,那么我会去。 (在我看来,它可以不使用 OOP 方式来完成。就像不使用 try-catch 一样。)
program Enum
type Food = (Pizza, Biryani, Halwa, Cham_Cham)
var Choice: Food;
begin
WriteLn('Pizza, Biryani, Halwa, Cham_cham');
repeat
WriteLn('Which Food Do you want to eat?');
Read(Choice);
Until Choice <> Food
WriteLn('You can eat: ' + Choice);
end.
Until Choice <> Food
Food
是一种类型。 Choice
是一个值。您不能将类型与值进行比较。这就是错误消息告诉您的内容。如果要将输入的值与某个值进行比较,它必须是 Food
类型的另一个值。
关于你的另一个问题,语言中的名称不能包含空格。
您可能需要重新考虑如何获得此输入。就目前而言,您的代码希望用户输入序数值。我怀疑您希望用户必须输入数字。此外,这使他们能够输入无效的序数值,即超出类型范围的序数值。
更好的方法可能是要求用户输入文本,然后让您的代码将文本与食物名称进行比较,并适当地分配序号。但我真的不知道你的程序想要达到什么目的,而且它超出了这个问题的范围,无法多说。