从Integer输入输入后,它将自动跳过从String获取输入。我不知道为什么?
获取String和Integer输入的简单Ada代码:
with ada.Text_IO; use ada.Text_IO;
with ada.Integer_Text_IO; use ada.Integer_Text_IO;
procedure Main is
inputText: String (1..10);
inputNmbr : Integer;
StringNatural: Integer;
begin
Put_Line("Enter Integer");
Get(inputNmbr,1);
Put_Line("Enter String");
Get_Line(inputText,StringNatural);
Put_Line("===================");
Put("Input for Integer: ");
Put(inputNmbr,1);
Put_Line("");
Put_Line("Input for String: ");
Put_Line(inputText(1..StringNatural));
end Main;
输出:
Enter Integer
2
Enter String
===================
Input for Integer: 2
Input for String:
[2015-07-11 23:01:00] process terminated successfully, elapsed time: 00.86s
答案 0 :(得分:6)
Get
无法清除键盘缓冲区,因此您将回车发送到Get_Line
作为输入。您可以在Skip_Line
之后添加Get
来解决此问题:
Put_Line("Enter Integer");
Get(inputNmbr,1);
Skip_Line; -- add this
Put_Line("Enter String");
Skip_Line是一个输入程序,会使输入跳到下一行。这对于从输入缓冲区中删除回车非常有用。 应在调用Get程序后执行Skip_Line。它还可用于使程序暂停并等待回车。