Ada输入和输出问题

use*_*972 1 input ada gnat output

从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;
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

ipa*_*avl 6

Get不会清除键盘缓冲区,所以你有一个回车发送到Get_Line输入.你可以用一个Skip_Line后来Get解决这个问题:

Put_Line("Enter Integer");
Get(inputNmbr,1);
Skip_Line; -- add this
Put_Line("Enter String");
Run Code Online (Sandbox Code Playgroud)

Skip_Line文件:

Skip_Line是一个输入过程,将导致输入跳到下一行.这对于从输入缓冲区中删除回车非常有用.应在调用Get过程后执行Skip_Line.它还可用于使程序暂停并等待输入回车.

另请参阅:清除Ada中的键盘缓冲区