首页 > 解决方案 > 嵌套 IF 错误“;” 预期但发现“标识符 GANJIL”

问题描述

我收到一条错误消息说:Fatal: Syntax error, ";" expected but "identifier GANJIL" found。所以我决定将“;”放在错误行(注释为错误1)。现在出现第二条错误消息,说:Fatal Syntax error, ";" expected but "ELSE" found在另一行。(评论为“错误2”)我一直在通过谷歌寻找解决方案,但没有任何帮助。之前谢谢。

program s01;
Var 
    x,t,i,counter,genap,ganjil:integer;
begin
    write('Masukkan nilai x :'); readln(x);
    for i:=1 to x do
    begin
        write('case ',i,' :'); readln(t);
        genap  := 1;
        ganjil := 1;
        for counter:=0 to (t+2) do
        begin
            if counter=t+2 then
                write(ganjil)
        else
            write(ganjil,'') //Error 1
            ganjil := ganjil+2
        else
            if counter=t-1 then //Error 2
                    write(genap);
            else
                    begin
                        write(genap,'');
                        genap := genap+2;
                    end;    
        end;
        writeln();
    end;
Readln();            
end.

标签: pascal

解决方案


第二个 else 没有意义。构造是 if..then[..else],每个 if 只有一个 else。

另外 write(genap) 之前的分号可能不是您想要的。

而且缩进很奇怪。(为什么 write(ganjil,'') 和 ganjil:=ganjil+2; 在同一级别?)。

除了让你自己更容易之外,如果你理解它,适当的缩进也是一个使用的线索。


推荐阅读