Arrays 将2行输入读入2个数组

Arrays 将2行输入读入2个数组,arrays,delphi,input,stdin,pascal,Arrays,Delphi,Input,Stdin,Pascal,我正在尝试转换输入,如下所示: 1 5 9 12 16 21 25 3 7 12 13 14 15 16 19 20 26 分成两个数组,每行输入一个数组。目前我有以下代码: FUNCTION readId : integer; VAR id : integer; i : integer; first : a; second : a; TYPE a = ARRAY[0..(size - 1)]

我正在尝试转换输入,如下所示:

1 5 9 12 16 21 25
3 7 12 13 14 15 16 19 20 26
分成两个数组,每行输入一个数组。目前我有以下代码:

FUNCTION readId : integer;

    VAR
        id : integer;
        i : integer;
        first : a;
        second : a;

    TYPE
        a = ARRAY[0..(size - 1)] OF integer;

    BEGIN

        i := 0;
        WHILE (NOT eoln) DO BEGIN
            read(id);
            first[i] := id;
            Inc(i);
        END;


        i := 0;
        WHILE ((NOT eof) AND (NOT eoln)) DO BEGIN
            read(id);
            second[i] := id;
            Inc(i);
        END;
    END;
这适用于第一个数组,但第二个数组未填充。我做错了什么?

当eoln为真时,第一个while循环将结束,而在第二个while循环的开头,eoln仍然为真。这意味着第二个while循环的主体永远不会执行,因为条件(而不是eof和noteoln)将为false


您可以尝试将readln放在第二个while循环之前。

使用调试器找出原因。考虑阅读不可能进入第二行的原因。为什么使用旧的Pascal I/O,而不是更新的RTL风格I/O?您可以使用TStringList或TStreamReader来读取单独的行,并使用单独的TStringList来解析每一行。顺便说一句,您的代码不会编译,因为a的声明在定义它的类型声明之前,并且没有定义大小。将来请包含您的实际代码,这样读者就不必在这些错误上浪费时间。@MartynA我找不到如何调试我的pascal代码?您在哪里找到的?见例。