我正在做一个程序,其中用户输入一定数量的员工的工资,姓名和每月工作时间。这段代码应该可以接收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.
答案 0 :(得分:4)
动态数组基于零。您应该从零循环到Nemp-1
。或从零循环到High(employee)
。
正如@Rudy和@trincot指出的那样,要读取employee
数组的长度,请使用ReadLn(Nemp)
以避免不必要的输入效果。
提示:
在调试时在编译器中启用范围和溢出检查。那本可以在高范围内检测到错误。