读取()不起作用
Read() doesn't work
程序读取 (s2) 不起作用
var
s1, s2: string;
h1, m1: integer;
begin
read(s1);
h1 := Strtoint(s1[1:3]);
m1 := StrtoInt(s1[4:6]);
read(s2);
write(h1, m1);
end.
编译看起来像这样
12:25
1225
它应该是这样的
12:25
(asking s2)
1225
您的变量 s1
和 s2
被声明为字符串,它们可以包含用户可以在键盘上键入的任何字符,以及任意数量的字符。那么,您如何想象当用户按下一个键时,程序如何判断它应该是 s1
还是 s2
的一部分?答:不能。
要使您的代码正常工作,请使用 readln
而不是 read
。这样,当 readln
执行时,用户必须按 Enter 告诉程序完成等待更多字符的输入。
请注意,某些 Pascal 实现允许您这样写
readln(i1, i2)
其中 i1
和 i2
是整数。如果用户键入由 space 或 Tab 分隔的两个整数,这将起作用,因为这样阅读代码可以知道 i1
和 [= 的输入在哪里结束20=]开始。
另请注意
readln;
本身等待用户按 Enter,这是让程序进入 "pause".
的基本方法
程序读取 (s2) 不起作用
var
s1, s2: string;
h1, m1: integer;
begin
read(s1);
h1 := Strtoint(s1[1:3]);
m1 := StrtoInt(s1[4:6]);
read(s2);
write(h1, m1);
end.
编译看起来像这样
12:25
1225
它应该是这样的
12:25
(asking s2)
1225
您的变量 s1
和 s2
被声明为字符串,它们可以包含用户可以在键盘上键入的任何字符,以及任意数量的字符。那么,您如何想象当用户按下一个键时,程序如何判断它应该是 s1
还是 s2
的一部分?答:不能。
要使您的代码正常工作,请使用 readln
而不是 read
。这样,当 readln
执行时,用户必须按 Enter 告诉程序完成等待更多字符的输入。
请注意,某些 Pascal 实现允许您这样写
readln(i1, i2)
其中 i1
和 i2
是整数。如果用户键入由 space 或 Tab 分隔的两个整数,这将起作用,因为这样阅读代码可以知道 i1
和 [= 的输入在哪里结束20=]开始。
另请注意
readln;
本身等待用户按 Enter,这是让程序进入 "pause".
的基本方法