我无法获得以下脚本来返回我的输入值;我看过ARM以及约翰巴恩斯的书,但无济于事。理论上它应该有效。 谁知道为什么?我是新手,所以巴恩斯的书和ARM对我来说可能太先进了。
with Ada.Text_IO;
use Ada.Text_IO;
procedure ron is
A : Character;
begin
Put_Line ("Hi Ron, how are you?");
A := Character'Value (Get_Line);
Put_Line ("So you feel" &
Character'Image (A));
end ron;
--TERMINAL OUTPUT
--ronhans@amante ~/Desktop $ gnatmake -gnat2012 ron.adb
--gcc-4.8 -c -gnat2012 ron.adb
--gnatbind -x ron.ali
--gnatlink ron.ali
--ronhans@amante ~/Desktop $ ./ron
--Hi Ron, how are you?
--well.
--raised CONSTRAINT_ERROR : bad input for 'Value: "well."
答案 0 :(得分:2)
如果您查看LRM,您会看到Ada.Text_IO.Get_Line
返回String
:
with Ada.Text_IO;
procedure Ron is
begin
Ada.Text_IO.Put_Line ("Hi Ron, how are you?");
declare
Reply : constant String := Ada.Text_IO.Get_Line;
begin
Ada.Text_IO.Put_Line ("So you feel " & Reply & "?");
end;
end Ron;
答案 1 :(得分:1)
您的程序问题是您尝试将一个字符数组放入一个字符中。不要使用A : Character
,而是尝试定义类似
type Character_Array_T (1 .. 10) of Character;
...
A : Character_Array_T;
或使用
with Ada.Strings.Unbounded;
...
A : Ada.Strings.Unbounded.Unbounded_String;
我建议使用无界字符串,以便输入不受某些特定字符串长度的限制,如果您打算多次读出输入。 Ada类型string
要求您指定字符串长度,此长度恰好是此字符串应包含的字符数。