抱歉,我想问有关 Ada 语言的问题。首先,我想解释一下,我第一次学习了 Ada 语言,我正在尝试制作一个简单的程序,就像我所附的那样 -> https://pastebin.com/Z1CWUSQv
with Ada.Text_IO;
use Ada.Text_IO;
procedure Main is
Name : STRING (1..50);
begin
Put("Hallo, whats your name?");
Get(Name);
if (Name = "William") then
Put_Line ("Hai william");
elsif (Name = "Erick") then
Put_Line ("Hai erick");
else
Put_Line ("i dont know, who are you!");
end if;
end Main;
Run Code Online (Sandbox Code Playgroud)
https://i.stack.imgur.com/1fTLR.png 所以,我的问题是:当我写完代码时,我进行了构建并且成功了,之后我运行了程序,输出看起来像这个:
完成后,我按下 Enter 键,之后没有任何事情发生,程序不执行下一个命令(我做了一个 if / else 命令)
我正在使用 Gnat Studio IDE 或在线编译器 --> https://www.tutorialspoint.com/compile_ada_online.php,那么我的程序有什么问题?是否有任何我需要安装的工具等?请知道我很难找到有关此问题的参考资料。我希望所有阅读本文的人都可以帮助我。(抱歉我的英语不好)
~谢谢
字符串对于 Ada 的新手来说很难掌握。在这种情况下,问题Name是 50 个字符长,所以
Get,它要读取 50 个字符,它将继续读取直到读取到 50 个字符(或到达输入的末尾)。这就是您的程序似乎卡住的原因。"William"不是 50 个字符长,因此它不可能等于Name.您可以使用程序Get_Line(ARM A.10.7(18)),如下所示:
with Ada.Text_IO;
use Ada.Text_IO;
procedure Main is
Name : STRING (1..50);
Last : Natural;
begin
Put("Hallo, whats your name?");
Get_Line (Name, Last);
if (Name (1 .. Last) = "William") then
Put_Line ("Hai william");
elsif (Name (1 .. Last) = "Erick") then
Put_Line ("Hai erick");
else
Put_Line ("i dont know, who are you!");
end if;
end Main;
Run Code Online (Sandbox Code Playgroud)