私はプログラムを作成しており、これは次のようになっているはずです。プログラムは、登録する人の名前と年齢を取得する必要があります。年齢が13歳未満の場合は、子供としてカウントし、13歳以上の場合は大人としてカウントします。名前はメモに表示され、子供と大人の人数が表示されます(私は編集ボックスに表示されます)。ループに条件が満たされてもループが実行されるのはなぜですか?
問題は、私がwhileループを使用していることです。たとえば、私の条件は、大文字の名前が 'EXIT'の場合、プログラムは終了するはずですが、これは起こっていません。代わりに、プログラムは年齢を聞くために続き、その後終了します。
は、ここに私のコードです:
name:= inputbox('dialog','Enter your name', '');
edit1.Text:=name;
adults:=0;
children:=0;
while uppercase(name) <> 'EXIT' do
begin
name:= inputbox('dialog','Enter your name', '');
memo1.Lines.Add(''+name);
age := strtoint(inputbox('age', 'Enter your age', ''));
if age<13 then
begin
children:=children+1;
edit3.Text:=inttostr(children)
end
else if age>=13 then
begin
adults:=adults+1;
edit2.Text:=inttostr(adults);
end ;
showmessage('Hello '+name+', Welcome to our funday');
end; // while
Delphiプログラマではありませんが、他の言語と同じですが、while条件はサイクルの開始時にのみテストされます。サイクル内のコードブロック中に –
コードをステップ実行したときにデバッガからどのようなことが伝えられますか? –
「名前を入力」を求めた後に「名前」変数が設定されているため、この現象が発生しています。したがって、その振る舞いは設計通りです。 –