我的 if 语句有什么问题?

2024-04-15

我现在正在尝试探索帕斯卡。我遇到了一些编译器错误。我写了一个 if else if 语句,如下所示:

  if ((input = 'y') or (input = 'Y')) then
    begin
      writeln ('blah blah');
    end;
  else if ((input = 'n') or (input = 'N')) then
    begin
      writeln ('blah');
    end;
  else
    begin
      writeln ('Input invalid!');
    end;

它一开始就给我一个错误else:

“;”预期但发现“ELSE”

我查找了很多有关 if 语句的教程,他们只是像我一样这样做:

if(boolean_expression 1)then 
   S1 (* Executes when the boolean expression 1 is true *)

else if( boolean_expression 2) then 
   S2 (* Executes when the boolean expression 2 is true *)

else if( boolean_expression 3) then 
   S3 (* Executes when the boolean expression 3 is true *)

else 
   S4; ( * executes when the none of the above condition is true *)

我尝试删除begin and end但发生了同样的错误。这是编译器错误吗?

附:我在案例陈述中这样做。但我认为这并不重要。


;之前不允许else在大多数情况下。

  if ((input = 'y') or (input = 'Y')) then
    begin
      writeln ('blah blah');
    end
  else if ((input = 'n') or (input = 'N')) then
    begin
      writeln ('blah');
    end
  else
    begin
      writeln ('Input invalid!');
    end;

将编译。 但是...更喜欢使用begin ... end括号以避免复杂代码的误解if then else声明。 像这样的东西会更好:

  if ((input = 'y') or (input = 'Y')) then
  begin
    writeln('blah blah');
  end
  else
  begin
    if ((input = 'n') or (input = 'N')) then
    begin
      writeln('blah');
    end
    else
    begin
      writeln('Input invalid!');
    end;
  end;

第二个示例更容易阅读和理解,不是吗?

删除后该代码不起作用begin and end因为前面有一个分号else。这将编译没有错误:

  if ((input = 'y') or (input = 'Y')) then
    writeln('blah blah')
  else
  begin

  end;

Appended关于@lurker的评论

请看下面的例子,不带begin ... end括号。

  if expr1 then
    DoSmth1
  else if expr2 then
    if expr3 then
      DoSmth2
    else
     DoSmth3;//Under what conditions is it called?

这里看不清楚,如果DoSmth3被召唤not (expr2) or (expr2) and (not (expr3))。尽管我们可以预测此示例中的编译器行为,但更复杂的代码没有begin ... end容易出错并且难以阅读。请看下面的代码:

  //behaviour 1
  if expr1 then
    DoSmth
  else if expr2 then
  begin
    if expr3 then
      DoSmth
  end
  else
    DoSmth;

  //behaviour 2
  if expr1 then
    DoSmth
  else if expr2 then
  begin
    if expr3 then
      DoSmth
    else
      DoSmth;
  end;

现在代码的行为是显而易见的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 if 语句有什么问题? 的相关文章

  • 在 R 中使用 ifelse

    我正在尝试在 R 中编写以下语句 if and ifelse 样本数据是试验数据 x y 和 z 是试验的列 需要编码的语句 if x gt 0 if y gt 0 l 2 else l 5 if z gt 0 m l 2 else m 5
  • 如何使用 PHP 检查 MySQL 表是否存在?

    理论上听起来很简单 我已经做了相当多的研究 但很难弄清楚这一点 如何检查 MySQL 表是否存在以及它是否执行某些操作 我想一个简单的 php if else 语句可以解决这个问题 有没有办法做到这一点 这就是我对 cwallenpoole
  • SQL 存储过程 IF EXISTS UPDATE ELSE INSERT

    好的 我得到了很多帮助here https stackoverflow com questions 11906506 sql server 2008 if not exists insert else update之前使用 SQL 后端来实
  • 如何在 JavaScript 的“if”语句中指定多个条件[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 这是我试图提及两个条件的方式如果这个或这个 但它不起作用 if Type 2 PageCount 0 Type 2 PageCou
  • Bash if 语句中何时需要方括号?

    通常 我在 if 语句中使用方括号 if name Bob then 但是 当我检查是否grep成功了我不使用方括号 if grep q text file then 什么时候需要方括号if陈述 方括号是同义词test命令 一个if语句检查
  • React Native 箭头函数和“if”语句

    我刚刚接受了箭头函数的教育 以及当您开始使用子函数时它们如何帮助提高可见性React Native 和全局可访问的对象 https stackoverflow com questions 50209526 react native and
  • 如何在matlab中检查字符串中的模式?

    我想检查字符串中是否存在特定模式来执行某些操作 filename pathname uigetfile fullpath pathname filename 在我的程序中 我只会浏览图片 所有图片都以该模式命名 cam1 jpg cam1
  • if..else 或 Select..case 哪个更快?

    我有三个条件可以比较 以下两者哪一个更快 请指出我 谢谢大家 If var 1 then Command for updating database ElseIf var 2 then Command for updating databa
  • Java 中子字符串与字符串的比较

    所以基本上 用户输入 2 个字符串 CATSATONTHEMAT AT 我们需要计算第二个字符串在第一个字符串中出现的次数 所以这里的答案是 3 这就是我到目前为止所拥有的 而且它一直在说 线程 主 中的异常 java lang Strin
  • 带有条件 isset 的 If 语句和比较不能一起工作

    我在制作时遇到问题if声明 code if detail variable exists and is equal to 1 code if detail variable doesn t exist or is not equal 1 由
  • “IF”语句中的 Java 布尔值不起作用 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 不幸的是
  • 冲出地图

    所以我遇到这个问题 如果数组中的值高于输入的值 它应该执行某些操作 然后停止循环并且不要触及数组中的剩余值 这是到目前为止的代码 const percentages let enteredValue parseInt event targe
  • 如何避免使用全局变量?

    我使用全局变量 但我读到它们不是一个好的实践或Pythonic 我经常使用的函数会给出许多是 否变量 我需要在主函数中使用这些变量 例如 在不使用全局变量的情况下 如何编写以下代码 def secondary function global
  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人
  • 如果 netezza 中存在则删除

    我需要一个命令来删除表 如果存在 NETEZZA 类似这样的东西 drop table if exists xxx 我已经搜索并尝试了很多但没有成功 你能帮我一下吗 In netezza你可以使用这个语法 drop table table
  • 如何使用用户输入来寻址 Pascal 中的特定变量(Eval/Exec?)

    我正在尝试在分形程序中做一些非常具体的事情隆起7X http apophysis 7x org 使用的脚本语言是Pascal 该项目是用德尔福写的 https svn code sf net p apophysis7x svn trunk
  • 我的 switch 语句中的 if 语句在我的计算器中无法正常工作。需要帮助修复除以 0 错误

    我创建了一个基本计算器 但是用除法对其进行了编码 当我除以零时 它会在第二个文本框中向用户提供错误 但现在即使我除以 3 或任何其他不为 0 的数字 错误不断出现在我的第二个文本框中 namespace calc
  • C# 要么返回 false 要么什么也不做

    我想知道是否有办法不必重复相同的事情如果施工而是调用一个状态检查 成功后无法返回true 有人知道这个问题更好的标题吗 bool Enable if GetStatus ref status Trace WriteLine Error re
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • 不明白为什么当变量为整数时条件评估为 True

    我正在使用表现出以下行为的代码 假设我有一个变量d我把它赋给一个整数9 d 9 为什么以下语句有效 In 95 if d print d else print Did not print d 9 In 96 当 d 本身不是布尔值且未通过以

随机推荐

  • 在 JQuery 中通过 AJAX 上传文件

    我是 JQuery AJAX 的新手 我想用jquery实现文件上传 是否可以使用 JQuery AJAX 进行文件上传并将其发送到 Servlet Servlet 可以使用 apache file commons 来上传文件 有人可以建议
  • Android 通知 LED 不使用我的颜色

    我正在尝试使用一个通知 该通知也使用我的 S3 上的通知 LED 但由于某种原因 颜色将始终为蓝色 我猜这是默认值 我尝试使用不同的颜色但没有任何变化 其他应用程序 例如 Whatsapp Gmail 和 Facebook 在显示不同颜色的
  • Mule 中使用日期的 JMS 消息选择器

    在 Mule 3 3 1 中 在异步处理期间 当我的任何外部服务关闭时 我想将消息放在队列中 retryQueue 具有特定的 下次重试 时间戳 处理来自此的消息的流程retryQueue根据 下次重试 时间选择消息 如果 下次重试 时间超
  • 为什么我不能将会话 bean 作为 Java EE 5 中的 JSF 支持 bean

    AFAIK JBoss Seam 的全部目的是集成 EJB 和 JSF Seam in Action 一书说道 根据设计 EJB 组件不能直接绑定到 JSF 视图 EJB 真是太棒了 组件具有可扩展性 事务性 线程安全性和安全性 但作用不大
  • 有没有办法在 venv/web 服务器中安装 Tesseract OCR?

    我制作了一个执行 OCR 功能的 Python 脚本 然后回收了该脚本并使用 Flask 制作了一个 Web 应用程序 Web 应用程序及其库位于 virtualenv 中 但该应用程序使用操作系统 Windows 中安装的 Tessera
  • load_plugin_textdomain 不起作用

    嘿 我正在尝试本地化一个名为 Donate Plus 的插件 技术上本地化 该插件附带 en CA 和 de DE 文件 我尝试创建 he IL 文件但没有成功 所以我尝试使用插件附带的 de 文件 但没有成功 我已将 wp config
  • SwiftUI:不同层次结构中的弹出框+工作表问题

    我遇到了呈现弹出框然后尝试呈现表格的问题 该表无法呈现 我准备了一个显示两个按钮的简短代码 第一个在其自身上呈现一个弹出窗口 单击此按钮 第二个呈现一张纸 然后这个按钮 重现步骤 可在 iPad 上重现 单击第一个按钮 会出现一个弹出窗口
  • 使用 jdk 8 时 Java 模态对话框冻结整个应用程序

    很少 当使用 Java Swing 应用程序显示模式对话框时JDK1 8 0 144 整个应用程序被冻结 我在 JDK bug 数据库中找不到相关的 bug 唯一看起来远程相关的是this one https bugs openjdk ja
  • 如何在 TypeScript 中定义通用对象数组,每个项目都有不同的模板参数[重复]

    这个问题在这里已经有答案了 我试图为表单定义一个字段数组 其中每个项目可能有不同的类型 我定义了这些类型 interface FormData value1 number value2 number null value3 string v
  • 如何将 `std::chrono::milliseconds` 转换为 `boost::posix_time::milliseconds`

    我正在使用 boost asio deadline timer 像这样在async read操作在一个TCP套接字 我在用提升1 61 long time out millis 2000 boost asio deadline timer
  • C# 使用子类参数重写方法

    我正在努力实现这样的目标 public abstract class BaseEvent public abstract void Dispatch IEventHandler handler public class MyEvent Ba
  • Android 上检测触摸区域

    是否有可能检测到每个被触摸的像素 更具体地说 当用户触摸屏幕时 是否可以跟踪用户触摸的点簇的所有 x y 坐标 如何区分用户用拇指绘图和用指尖绘图的区别 我想根据用户触摸屏幕的方式反映画笔的差异 并且还想跟踪随着时间的推移触摸的所有像素的
  • rake 资产预编译失败

    当我跑步时bundle exec rake assets precompile trace 我的预编译失败 但我看不出任何具体原因 请参阅此粘贴箱以获取我的输出 http pastebin com zggZyPyM http pastebi
  • Android - 拦截并传递所有触摸事件

    我有一个覆盖 ViewGroup 它是屏幕的大小 我想用它来在用户与应用程序交互时显示效果 但仍然将 onTouch 事件传递给任何底层视图 我对所有 MotionEvents 不仅仅是 DOWN 感兴趣 所以 onInterceptTou
  • 找不到模块:错误:无法解析模块“semantic-ui-css”

    我正在尝试使用Webpack https webpack github io 语义用户界面 http semantic ui com 但没有成功 我试过 npm i semantic ui css In my index js import
  • OData / WCF 数据服务不适用于复杂类型

    我对 OData 和 WCF 数据服务是全新的 所以这可能是一个简单的问题 我正在使用 VS Web Developer Express 2010 其中我在控制台应用程序中托管了一个非常简单的 WCF 数据服务 它从存储库 位于单独的 dl
  • EditText 在 ListView 中滚动时丢失内容?

    我有列表项EditText里面不知道会有多少物品 当我输入一些文本时遇到问题EditText 然后向下滚动ListView 当我再次向上滚动后 我的第一个中没有文字EditText 或者有一些来自其他人的文字EditText from Li
  • 如何避免在 Java 中检查空值?

    I use x null避免NullPointerException https docs oracle com javase 9 docs api java lang NullPointerException html 还有其他选择吗 i
  • 通过匹配模式过滤日志 - log4j

    我的 log4j xml 文件中有以下布局模式 d ISO8601 c p t x 9 5 4 RC12 m n 我想要的是 每当我收到包含消息的日志时process proc completed 应该跳过 我的意思是除了包含此消息的日志之
  • 我的 if 语句有什么问题?

    我现在正在尝试探索帕斯卡 我遇到了一些编译器错误 我写了一个 if else if 语句 如下所示 if input y or input Y then begin writeln blah blah end else if input n