使用字母A到(用户选择的值)填充数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用字母A到(用户选择的值)填充数组相关的知识,希望对你有一定的参考价值。
我有一个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;
答案
你不能只是添加到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()
。
另一答案
实际上你可以使用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
所需的内容
以上是关于使用字母A到(用户选择的值)填充数组的主要内容,如果未能解决你的问题,请参考以下文章