二维数组编程中的一个错误(20分)

  • 主题发起人 likongxu
  • 开始时间
L

likongxu

Unregistered / Unconfirmed
GUEST, unregistred user!
因为毕设要用delphi,这两天在学,按照教程编了一个关于数组的控制台程序。如下:
[blue]
program mulArray;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
A:array of array of string;
I,J:Integer;

begin
{ TODO -oUser -cConsole Main : Insert code here }
SetLength(A,10);
for I:=Low(A) to High(A) do
begin
SetLength(A,J);
for J:=Low(A) to High(A) do
begin
A[I,J]:=IntToStr(I)+','+IntToStr(J)+' ';
Write(A[I,J]);
end;
end;
Readln;

END.

[/blue]
编译时出现如下警告:
[Warning] mulArray.dpr(18): FOR-Loop variable 'J' may be undefined after loop
[Warning] mulArray.dpr(17): Variable 'J' might not have been initialized
[Warning] mulArray.dpr(15): Variable 'I' might not have been initialized
然后一个dos风格的运行窗口一闪而过,看不清结果,也不知道有没有结果。
请问这时什么原因?
 
SetLength(A,J);//在这句之前你没有给j赋值
 
那我该怎么办?
把SetLength(A,J)下移两行。
 
program mulArray;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
A:array of array of string;
I,J:Integer;

begin
{ TODO -oUser -cConsole Main : Insert code here }
SetLength(A,10);
for I:=Low(A) to High(A) do
begin
SetLength(A,J);//在这里,J用具体的数据代替,比如:SetLength(A,10);
for J:=Low(A) to High(A) do
begin
A[I,J]:=IntToStr(I)+','+IntToStr(J)+' ';
Write(A[I,J]);
end;
end;
Readln;

END.
 
使用一个局部变量前需要给局部变量赋值才能使用.所以你在使用I,J这前先给I,J赋值.即在
一进入过程就先给这两个变量赋值 .
 
谢谢前面各楼的帮助,可是,我一一试了还是不行。以前我一直是用vc的,这次因为毕设老师
指明要用delphi开发。本来以为学了vc来学delphi容易些。(感觉确实也容易上手些)可是没想
昨天编一个数组的题目就老是出错。
program mulArray;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
A:array of array of string;
I,J:Integer;

begin
{ TODO -oUser -cConsole Main : Insert code here }
I:=1
//在这里我无论赋0还是1都不行,提示[Warning]
J:=1
//mulArray.dpr(21): FOR-Loop variable 'J' may be undefined after loop
SetLength(A,10);
for I:=Low(A) to High(A) do
begin

SetLength(A,J);
for J:=Low(A) to High(A) do
begin

A[I,J]:=IntToStr(I)+','+IntToStr(J)+' ';
Write(A[I,J]);
end;
end;
Readln;

END.
 
唉,你定义的是一个二维数组啊.注意下面代码中取数组上下限的地方是怎么写的.你访问的A还没有
SetLength,当然是-1了,所以执行不到啊.
var
A:array of array of string;
I,J:Integer;

begin
{ TODO -oUser -cConsole Main : Insert code here }
I:=1
//ÔÚÕâÀïÎÒÎÞÂÛ¸³0»¹ÊÇ1¶¼²»ÐУ¬Ìáʾ[Warning]
J:=1
//mulArray.dpr(21): FOR-Loop variable 'J' may be undefined after loop
SetLength(A,10);
for I:=Low(A) to High(A) do//你要访问数组的上下限应该这么写,OK.
begin

SetLength(A,J);
for J:=Low(A) to High(A) do
begin

A[I,J]:=IntToStr(I)+','+IntToStr(J)+' ';
Write(A[I,J]);
end;
end;
Readln;
 
在SetLength(A,J)前添加J := 1;
 
感谢proman,按照你改的可以运行,并由结果。可是结果不是我想要的结果。
书上说结果应该是 1,0 2,0 2,1 3,0 3,1 3,2 4,0 4,1 4,2 4,3 5,0……
9,0 9,1 9,2 9,3 9,4 9,5 9,6 9,7 9,8
 
program mulArray;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
A : array of array of string;
I, J : Integer;

begin
{ TODO -oUser -cConsole Main : Insert code here }
SetLength(A, 10);
for I := Low(A) to High(A) do
begin
J:=I;
SetLength(A, J);
for J := Low(A) to High(A) do
begin
A[I, J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
Write(A[I, J]);
end;
end;
Readln;

end.

 
没看见你题目啊.
 
谢谢proman大哥的帮忙
 

Similar threads

I
回复
0
查看
737
import
I
I
回复
0
查看
514
import
I
I
回复
0
查看
713
import
I
I
回复
0
查看
2K
import
I
I
回复
0
查看
818
import
I
顶部 底部