左上角是我的代码生成的。我想要得到的结果在左下角。我的代码在图片的右侧。] 1
您基本上有以下代码:
for i = 1 to 9 do
for j = 1 to 9 do
List.Lines.Add(...)
声明
List.Lines.Add(...)
将运行9×9 = 81次。由于此语句增加了一行,因此您将获得81行。
这是您逻辑上的缺陷。您只需要9行,但是每行应包含0个组件。因此,您需要重新设计代码。
由于这似乎是家庭作业,因此我不会详细介绍解决方案。相反,我将为您提供以下命令行程序进行研究:
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.