delphi - 如何停止我的嵌套循环?它一遍又一遍地循环。我只想要 18 个结果而不是 81
问题描述
var
arrGame: array [1 .. 9, 1 .. 9] of char;
arrPlanets: array [1 .. 9, 1 .. 9] of char;
implementation
{$R *.dfm}
{$R+}
procedure TfrmQ3.btnQ3_1StartGameClick(Sender: TObject);
var
i, j: integer;
cGame: char;
begin
btnQ2Play.Enabled := true;
redQ3GameBoard.Clear;
redQ3incorrect.Clear;
for i := 1 to 9 do
begin
for j := 1 to 9 do
arrGame[i,j] := '-';
end;
for i := 1 to 9 do
begin
for j := 1 to 5 do
begin
redQ3GameBoard.Lines.Add(arrGame[i,j]+ ' ' + arrGame[i,
j] + ' ' + arrGame[i,j] + ' ' + arrGame[i,j] + ' ' + arrGame[i,
j] + ' ' + arrGame[i,j] + ' ' + arrGame[i,j] + ' ' + arrGame[i,
j] + ' ' + arrGame[i,j]);
end;
end;
end;
end.
左上角是我的代码生成的内容。我试图得到的结果在左下角。
解决方案
你基本上有这个代码:
for i = 1 to 9 do
for j = 1 to 9 do
List.Lines.Add(...)
该声明
List.Lines.Add(...)
将运行 9 × 9 = 81 次。由于此语句添加了一行,因此您将获得 81 行。(另外,每行有 9 个相同的值!例如,当 i = 4 和 j = 6 时,您将arrGame[4, 6]
在该行上打印该值 9 次。你能看到是怎么回事吗?)
这是你逻辑上的缺陷。您只需要 9 行,但每行应包含 9 个组件。因此,您需要重新设计代码。
由于这似乎是家庭作业,因此我不会详细给您解决方案。相反,我会给你下面的命令行程序来学习:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
Grid: array of array of Char;
const
N = 9;
var
i, j: Integer;
s: string;
function GetRandomLetter: Char;
begin
Result := Chr(Ord('A') + Random(Ord('Z') - Ord('A') + 1));
end;
begin
try
try
Randomize;
SetLength(Grid, N, N);
// Build grid
for i := 0 to N - 1 do
for j := 0 to N - 1 do
Grid[i, j] := GetRandomLetter;
// Draw grid
for i := 0 to N - 1 do
begin
s := Grid[i, 0];
for j := 1 to N - 1 do
s := s + #32 + Grid[i, j];
Writeln(s);
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
finally
Writeln('Press Return to exit.');
Readln;
end;
end.
推荐阅读
- apache - .htaccess 重定向除某个域的一个和另一个内部重定向之外的所有页面
- python-3.x - 如何在 django-rest 中设置默认的内部序列化程序数据?
- python - 如何在 Python 的 sys.stdin 中的一行中提取多个单词?
- linux - 在脚本命令中使bash扩展通配符?
- vue.js - VueJs - 在页面重新加载之前等待 OPTION 响应
- r - 使用 R markdown 在 pdf 文档中呈现表格
- java - Java 8 Streams - 从对象列表中收集多个整数字段
- server-sent-events - nghttp2:使用服务器发送的事件供 EventSource 使用
- python - 轴标签未在 Python 中显示
- laravel - 如何从在 Cloud Run 上运行的 Laravel 项目连接到 Cloud SQL?