我如何停止嵌套循环?它一遍又一遍地循环。我只想要18个结果

问题描述 投票:0回答:1

左上角是我的代码生成的。我想要得到的结果在左下角。我的代码在图片的右侧。] 1

delphi multidimensional-array 2d nested-loops
1个回答
0
投票

您基本上有以下代码:

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.

Screenshot of program output: a 9-by-9 grid of capital letters.

© www.soinside.com 2019 - 2024. All rights reserved.