动态字符串数组跳过第一个索引

时间:2018-12-08 22:29:28

标签: arrays string pascal dynamic-arrays

我正在做一个程序,其中用户输入一定数量的员工的工资,姓名和每月工作时间。这段代码应该可以接收Nemp名员工,然后要求输入Nemp名。问题是,它总是跳过名字,它两次显示“雇员姓名:”,并且不允许用户插入名字。我不明白为什么会这样,任何帮助将不胜感激!

program test;

uses crt;

var 
i, Nemp : integer;
employee: array of string;

BEGIN

    read(Nemp);
    SetLength (employee, Nemp);

    for i:=1 to Nemp do

    Begin

        writeln ('Employee name: ');
        readln (employee[i]);

    end;

END.

1 个答案:

答案 0 :(得分:4)

动态数组基于零。您应该从零循环到Nemp-1。或从零循环到High(employee)

正如@Rudy和@trincot指出的那样,要读取employee数组的长度,请使用ReadLn(Nemp)以避免不必要的输入效果。


提示:

在调试时在编译器中启用范围和溢出检查。那本可以在高范围内检测到错误。