2010-10-04 107 views
1

我有這樣的變種:爲什麼這段代碼在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 

我應該怎麼辦?

回答

4

定義爲浮動或INT不是字符串:

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

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

好吧,它的工作原理。但我怎樣才能防止不好的輸入? – 2010-10-04 18:27:12

+0

我正在使用val(),但是這個語句失敗,因爲UserInput [1]不再是字符串 – 2010-10-04 18:27:48

+0

在這個級別上,afaik只有$ I +/-和IOError來檢查錯誤。要進行更詳細的錯誤處理,您必須將其作爲字符串讀取並進行自己的處理。這很容易,取決於編譯器。德爾福和FPC有相當不錯的設施。 – 2010-10-08 08:15:47

3

readln只是讀取文本,它不知道你的意思"10 1.5 18"是三個不同的東西。對你的人眼來說,那些是三個數字,但是對於電腦來說,它只是一個九個字符的字符串。

我的Pascal是很生疏的,但如果你定義UserInputfloat類型,然後readln應該文本解釋爲一個數字,如您所願。或者,如果readln只讀取字符串,則必須編寫更多代碼才能將其轉換爲數字。

相關問題