【问题标题】:FOR statement note working [closed]FOR语句说明工作[关闭]
【发布时间】:2014-01-05 11:27:56
【问题描述】:

对为什么这不起作用感到困惑。它在过去有效,我不知道我改变了什么。我没有收到任何错误,for 循环没有运行。循环运行前后的内容。

for(int i=2; i==length; i++){
    note = note.concat(args[i]);
    sender.sendMessage("Args[i]: " + args[i]);
    sender.sendMessage("Note: " + note);
}

Length 是一个整数,用于保存一维数组的长度。当长度为 3 或更大时会发生此错误(不要担心长度

【问题讨论】:

  • 你为什么认为我们应该知道length是什么?我们还没有读心术。此外,由于i!=length,它不会循环,您需要<。
  • 如果 for 循环没有运行,这意味着在开始第一次迭代之前长度不等于 2。你是说for(int i=2; i<length; i++) 吗?
  • 如果循环不运行,则循环条件不满足。此外,使用for 在条件中使用== 毫无意义,因为循环将只运行一次,因此代码实际上与if (length == 2) { ... } 相同。

标签: java arrays loops for-loop


【解决方案1】:

循环在 i == length 时运行。这意味着对于循环多次迭代,变量length 必须在每次迭代时更改,否则i != length。这似乎不是一个合法的解决方案,您可能打算输入 i < length(在 for 循环中很少使用相等作为终止语句)。

for(int i=2; i==length; i++){
    // This will iterate if length keeps changing to be equal to i.
    // Since you are not changing the value of length in the loop, you are 
    // expecting it to be changed asynchronously somewhere else in the code.
}

【讨论】:

  • 不是 DV,但值不变。他是在比较,而不是在分配。
  • 你是在问问题而不是回答问题——这就是 cmets 的用途。此外,显然循环运行只要i==length是正确的,这是基本的编程知识......
  • @l4mpi 当然是基本的编程知识,但我不明白为什么提到它是错误的,因为问题本身是非常基础的知识?
  • 当然你可以提到它,但是在我评论过的你的第一个版本中,这被表达为一个非常荒谬的问题(“这是正确的吗?”)。但无论如何,你的答案仍然很糟糕,因为 1.)i <= length 可能比< 更正确,2.)“必须在循环之外更改长度”部分根本没有意义(从哪里来?a不同的线程?魔术?) 3.)如果lenght==2 4.)使用 while 循环似乎是一个糟糕的建议(但for-each 循环可能是另一种选择)
  • 1.) args 的索引从 0 开始,这意味着 i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 2013-01-06
  • 2014-09-30
  • 2016-07-23
相关资源
最近更新 更多