如何使用Put_Line方法输出整数?

W.K*_*K.S 12 ada console-output

我无法编译这个程序,因为它似乎不会在Put_Line方法中打印整数变量和字符串.我已经在线查看了源代码,当它们这样做时它可以工作,所以我哪里出错了.谢谢你的帮助.

with Ada.Text_IO;                       use Ada.Text_IO;
with Ada.Integer_Text_IO;           use Ada.Integer_Text_IO;

procedure MultiplicationTable is

    procedure Print_Multiplication_Table(Number :in Integer; Multiple :in Integer) is
        Result : Integer;   
    begin
        for Count in 1 ..Multiple
        loop
            Result := Number * Count;
            Put_Line(Number & " x " & Count & " = " & Result);
        end loop; 
    end Print_Multiplication_Table;
    Number  :   Integer;
    Multiple    :   Integer;

begin
    Put("Display the multiplication of number: ");
    Get(Number);
    Put("Display Multiplication until number: ");
    Get(Multiple);
    Print_Multiplication_Table(Number,Multiple);
end MultiplicationTable;`
Run Code Online (Sandbox Code Playgroud)

Sha*_*rk8 10

问题是你正在使用&使用字符串和整数.请尝试以下方法之一:

替换Numberput内的参数Integer'Image(Number)

或者分解Put_Line成你想要的组件; 例如:

-- Correction to Put_Line(Number & " x " & Count & " = " & Result);
Put( Number );
Put( " x " );
Put( Count );
Put( " = " );
Put( Result);
New_Line(1);
Run Code Online (Sandbox Code Playgroud)


Ond*_*cny 5

尝试这个:

Put_Line(Integer'Image(Number) & " x " & Integer'Image(Count) & " = " & Integer'Image(Result));
Run Code Online (Sandbox Code Playgroud)


Kei*_*son 5

你已经withuse小句Ada.Integer_Text_IO,但你没有真正使用它.

改变这个:

Put_Line(Number & " x " & Count & " = " & Result);
Run Code Online (Sandbox Code Playgroud)

对此:

Put(Number); Put(" x "); Put(Count); Put(" = "); Put(Result); New_Line;
Run Code Online (Sandbox Code Playgroud)

(我通常不会在一行上放多个语句,但在这种情况下它是有道理的.)

请注意,Integer'Image将非负整数与空格相对应,我总是发现它非常烦人; Ada.Integer_Text_IO.Put不这样做(除非你问它).

可以定义重载"&"函数,如下所示:

function "&"(Left: String; Right: Integer) return String is
begin
    return Left & Integer'Image(Right);
end "&";

function "&"(Left: Integer; Right: String) return String is
begin
    return Integer'Image(Left) & Right;
end "&";
Run Code Online (Sandbox Code Playgroud)

这将使您的原始Put_Line呼叫有效,但多次Put呼叫可能是更好的风格.