Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么这段代码在Pascal中不起作用?_Arrays_Pascal - Fatal编程技术网

Arrays 为什么这段代码在Pascal中不起作用?

Arrays 为什么这段代码在Pascal中不起作用?,arrays,pascal,Arrays,Pascal,我有一个变量: var UserInput : array [1..3] of string; 我试图一次设置多个值 readln( UserInput[1], UserInput[2], UserInput[3] ); 代码运行时,所有输入都存储在UserInput[1]中 Ex.: Input: 10 1.5 18 Result: UserInput[1] = 10 1.5 18 UserInput[2] = 0 UserInput[3] = 0 我应该怎么做?定义为float或i

我有一个变量:

var
 UserInput : array [1..3] of string;
我试图一次设置多个值

readln( UserInput[1], UserInput[2], UserInput[3] );
代码运行时,所有输入都存储在UserInput[1]中

Ex.:
Input: 10 1.5 18

Result:
UserInput[1] = 10 1.5 18
UserInput[2] = 0
UserInput[3] = 0

我应该怎么做?

定义为float或int而不是string:

Var
    myVar   : Integer;
    myArray : Array[1..5] of Integer;

Begin
 myArray[2] := 25;
 myVar := myArray[2];
End.

定义为float或int而不是string:

Var
    myVar   : Integer;
    myArray : Array[1..5] of Integer;

Begin
 myArray[2] := 25;
 myVar := myArray[2];
End.
readln只是阅读文本,它不知道你的意思是10 1.5 18是三个不同的东西。在人类眼中,这是三个数字,但在计算机上,这只是一个九个字符的字符串

我的Pascal非常生疏,但是如果您将UserInput定义为float类型,那么readln应该像您所期望的那样将文本解释为数字。或者,如果readln只读取字符串,则必须编写更多代码才能将其转换为数字。

readln只读取文本,它不知道您的意思是10 1.5 18是三种不同的东西。在人类眼中,这是三个数字,但在计算机上,这只是一个九个字符的字符串


我的Pascal非常生疏,但是如果您将UserInput定义为float类型,那么readln应该像您所期望的那样将文本解释为数字。或者,如果readln只读取字符串,则必须编写更多代码才能将其转换为数字。

我使用的是val,但此语句失败,因为UserInput[1]在此级别上不再是字符串,因此只有$I+/-和IOError可检查错误。对于更详细的错误处理,您必须将其作为字符串读取并进行自己的处理。这有多容易,取决于编译器。Delphi和FPC在这方面有很好的工具。我使用了val,但是这个语句失败了,因为UserInput[1]在这个级别上不再是字符串,因为只有$I+/-和IOError来检查错误。对于更详细的错误处理,您必须将其作为字符串读取并进行自己的处理。这有多容易,取决于编译器。德尔福和FPC在这方面有很好的设施。