我只是想知道如何在pascal中进行类型检查?我一直在寻找几个小时,但我找不到任何有用的东西。
示例:
var
number: Integer;
begin
write('Enter a number: ');
read(number);
if {How am I supposed to check if 'number' is an Integer here?}
then writeln(number)
else writeln('Invalid input')
end.
答案 0 :(得分:3)
您实际上正在进行I / O类型检查。您可以通过暂时禁用它然后检查结果来解决此问题:
{$I-} //turn off IO checking temporarily
read(i);
{$I+} // and back on
if ioresult=0 then // check the result of the last IO operation
writeln('integer successfully read:',number)
else
writeln('invalid input');
注意:典型的答案通常是“只读一个字符串并自己进行转换”,但是如果不对终端类型做出假设就很难做到这一点。
对于那些只需要经过验证的输入的清晰简单的程序,上面的技巧(以及在错误时重复的循环)就足够了。
答案 1 :(得分:2)
答案 2 :(得分:0)
由于number
是Integer
,如果用户键入非数字值,应用程序将失败。你永远不会达到if
声明。
答案 3 :(得分:0)
这太简单了,请看下面的代码:
program int_check;
uses crt;
var n:real;
begin
clrscr;
write('Enter a number: ');readln(n);
if n-round(n)=0 then write('Integer!') else write('Not an Integer!');
readln;
end.
你看,没有字符串,没有IOcheck
,并且适合你的形式!
答案 4 :(得分:0)
直接使用frac(n)
program int_check;使用crt; var n:real;开始 clrscr; 写('输入数字:'); readln(n); 如果frac(n)= 0则写('整数!')否则写('不是整数!'); readln;端。