【问题标题】:Scope problems with nested java loops嵌套 java 循环的范围问题
【发布时间】:2012-02-16 11:22:30
【问题描述】:

我正在学习处理(对于那些不知道它是一种面向视觉艺术的基于 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];

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]);
  }
}

当我运行它时,我收到一条错误消息“找不到任何名为 L 的东西”,这对我来说似乎很疯狂。有什么想法吗?

【问题讨论】:

  • 这与您的问题无关,但以后可能会绊倒您。在纯 Java 中,您不应该有名称以大写字母开头的变量。所以在这个例子中你的数组'Points'和你的循环计数器'L'都是无效的。它们应该是“点”和“l”。通常,您不应该有两个仅通过大小写不同的变量名称(即,您不应该在同一个程序中同时将“Points”和“points”作为变量)。这几乎肯定会产生难以追踪的错误。
  • 事实上,编译器应该为此发出警告。注意这些警告,它们会让您的生活更轻松。

标签: java for-loop scope processing nested


【解决方案1】:

for 循环声明后有一个分号:

for (int L = i+1; L < points; L++);

【讨论】:

  • 太慢了!那好吧。至少我可以尝试通过添加,在编写 Java 以使用以大写字母开头(或在本例中为 is)的变量名时,它通常被认为是不好的形式。
【解决方案2】:

嵌套循环后面有一个分号。这会生成一个语法正确的空循环,然后是一个引用未声明变量 L 的块。

作为旁注,通常使用小写字母命名循环变量,通常以ijkm 等开头。小写的l 经常被跳过,因为它与大写的I 相似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2021-05-17
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多