You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Pascal语法错误:应为';'却找到'IF'?

Pascal语法错误解决:';' expected but 'IF' found 及逻辑优化

问题原因

你的代码报错是因为第一个If-Else语句块的结尾End {Else}后没有加分号。Pascal语法要求,当一个完整的语句块结束后,若后续还有独立的语句(比如第二个If),必须用分号分隔,否则编译器会把下一个If当成前一个块的一部分,触发语法错误。

另外你的逻辑存在冗余:当Age=16时,会先执行Else分支的内容,再执行第二个If的输出,这显然不符合你“三种不同输出”的需求,需要一并调整。

解决方案

1. 修复语法错误

在第一个If-Else的End {Else}后添加分号,让编译器识别出这是两个独立的语句块。

2. 优化逻辑结构

把三个判断合并为If-Else If-Else的互斥结构,确保每个年龄区间只触发对应输出:

  • 先判断Age > 16
  • 再判断Age = 16
  • 最后用Else处理Age < 16的情况

修正后的完整代码

Program HelloUser(input,output);
var
  UserName:string;
  Hobby:string;
  Age:integer;
Begin{main}
  Writeln('Hello user, please input your name.');
  Readln(UserName);
  Writeln('Nice to meet you, ',UserName,'. Let''s get to know each other better. What is your favorite hobby?');
  Readln(Hobby);
  Writeln('Nice one! ',Hobby,' is my favorite hobby too! How old are you, ',UserName,'?');
  Readln(Age);

  If Age > 16 then
  Begin {If}
    Writeln(Age,' is my favorite number, what a coincidence! I think we''ll be able to get along well in the future, ',UserName,'.');
  End {If}
  Else if Age = 16 then
  Begin {Else If}
    Writeln('Wow! What a coincidence, ',Age,' is my favorite number and ',Age,' is the age of my creator! I think we''ll be able to get along well in the future, I look forward to interacting with you again!');
  End {Else If}
  Else
  Begin {Else}
    Writeln('Wow, you''re quite young to be trekking the Internet, why not enter this domain when you''re a bit older. In the meantime, exercise those bones of yours outside!');
  End {Else};

End.{Main}

额外说明

  • 修正了原文中meeet的拼写错误,改为meet
  • 给字符串里的Lets添加了单引号,改为Let''s,符合Pascal字符串转义规则
  • 调整了第二个输出语句的空格,让文本更通顺

内容的提问来源于stack exchange,提问作者LongSleevesssowo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:45:30