使用字母A到(用户选择的值)填充数组

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

我有一个for循环从1到10以下的随机数。循环用字母填充一个数组所以说随机数是6:数组将是A,B,C,D,E,F除了我避风港每次循环运行时都找不到增加字符值的方法。

代码到目前为止:

Random := RandomRange(2, 10);
  for I := 1 to Random do
  begin
    Piles[I] := 'A' + I - 1;   {Piles is an array of undefined size}
    Writeln (Piles[i]);
  end;
arrays loops delphi
2个回答
2
投票

你不能只是添加到Char。你必须做的事情如下:

var
  Piles: string;
  C: Char;
  I: Integer;
  Count: Integer;
begin

  // ...

  Piles := '';
  Count := RandomRange(2, 10);
  for I := 1 to Count do
  begin
    C := Chr(Ord('A') + I - 1); 
    Piles := Piles + C;
    Writeln(C);
  end;
  Writeln;
  Writeln(Piles);

  // etc...

Ord()返回Integer(在这种情况下具有Char的序数值)。你可以添加到Integer。然后你用Char把它变回Chr()


3
投票

实际上你可以使用Char“加”到Inc()(并用Dec()减去);

c := 'A'; //c is a char variable
Random := RandomRange(2, 10);
for i := 1 to Random do
begin
  Piles[i] := c;
  Inc(c);
  Writeln(Piles[i]);
end;

你也可以循环使用Char变量

Random := RandomRange(2, 10);
for c := 'A' to Chr(Ord('A') + Random) do
begin
  Piles[i] := c;
  ShowMessage(Piles[i]);
end;

最后你也可以使用Succ()Pred()这样的另一个解决方案(假设Piles是一个Char数组)可以

Random := RandomRange(2, 10);
for i := 1 to Random do
begin
  if i = 1
    then Piles[i] := 'A'
    else Piles[i] := Succ(Piles[i-1]);
  ShowMessage(Piles[i]);
end;

编辑:

我经常忘记Inc()Dec()有第二个参数:

var
  c: char;
begin
  c := 'A';
  Inc(c, 3);
  ShowMessage(c); //Shows D
end;

通过这种方式,您可以有效地添加/减去Char所需的内容

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