为什么我在 pascal 中使用 record 'struct' 时会跳过?

Why I get this skipping when I work with record 'struct' in pascal?

当我告诉他货品编号时,他跳过了reference和designation的输入,直接进入price的输入,如图所示

首先,您的输出图像不符合您的代码。正如您的图片所示,代码 until ((n>=3)... 不接受输入“1”。可能是你做完图改代码了

其次,程序 运行 通过所有用户输入请求的原因是您使用 read() 而不是 readln()

Read() 从输入缓冲区 读取所有字符,但不包括 Enter[= 产生的 CRLF 40=] 键。 Read()CRLF 个字符留在缓冲区中。

ReadLn() 从缓冲区读取所有字符,包括 CRLF 个字符.

当您在上一次调用 Read() 之后调用 Read() 时,缓冲区中仍然有来自上一次数据输入的 CRLF 个字符,代码没有理由等待那些字符,所以它只是在下一行隆隆作响。

因此,当您阅读用户条目时,请使用 ReadLn() 而不是 Read()