嵌套java循环的作用域问题
我正在学习处理(对于那些不知道它是面向视觉艺术的基于java的语言的人来说),我遇到了嵌套for循环的一个奇怪问题。 这是一个简单的程序,可以生成任意数量的点,并将它们全部连接起来嵌套java循环的作用域问题,java,for-loop,scope,processing,nested,Java,For Loop,Scope,Processing,Nested,我正在学习处理(对于那些不知道它是面向视觉艺术的基于java的语言的人来说),我遇到了嵌套for循环的一个奇怪问题。 这是一个简单的程序,可以生成任意数量的点,并将它们全部连接起来 size(1280, 1050); background(227, 199, 147); smooth(); stroke(255); strokeWeight(2); int points = int(random(30)) + 2; int[][] Points = new int[points][2];
size(1280, 1050);
background(227, 199, 147);
smooth();
stroke(255);
strokeWeight(2);
int points = int(random(30)) + 2;
int[][] Points = new int[points][2];
for (int i = 0; i < points; i++)
{
Points[i][0] = int(random(1280));
Points[i][1] = int(random(1050));
}
for (int i = 0; i + 1 < points; i++)
{
for (int L = i+1; L < points; L++);
{
line(Points[i][0], Points[i][1], Points[L][0], Points[L][1]);
}
}
大小(12801050);
背景(227199147);
光滑的();
中风(255);
冲程重量(2);
int点=int(随机(30))+2;
int[][]点=新int[点][2];
对于(int i=0;i
当我运行这个程序时,我得到一个错误,说“找不到任何名为L的东西”,这对我来说似乎很疯狂。有什么想法吗?嵌套循环后面有一个分号。这将生成语法正确的空循环,后面是引用未声明变量
L
的块
作为旁注,通常使用小写字母命名循环变量,通常以
i
、j
、k
、m
等开头。小写的l
经常被跳过,因为它与大写的I
相似。在for循环声明之后有一个分号:
for (int L = i+1; L < points; L++);
for(int L=i+1;L
太慢了!哦,好吧。至少我可以补充一点,在编写Java时,使用以大写字母开头(或者在本例中是大写字母)的变量名通常被认为是不好的形式,这与您的问题无关,但以后可能会绊倒您。在纯Java中,不应该有名称以大写字母开头的变量。因此,在本例中,数组“Points”和循环计数器“L”都是无效的。它们应该是“点”和“l”。作为一项规则,你不应该有两个变量名,它们只在大写上有所不同(也就是说,你不应该在同一个程序中同时有“点”和“点”作为变量)。这几乎可以保证会产生难以追踪的bug。事实上,编译器应该发出这样的警告。注意这些警告,它们会让你的生活更轻松。