【问题标题】:How to solve for x when observing through a for loop?通过for循环观察时如何解决x?
【发布时间】:2016-10-27 23:07:49
【问题描述】:

假设 x 是一个整数并且已经被初始化为某个值。考虑代码

for (int a = 1; a < 20; a++)
    if (x < 0)
        x = a;

哪个语句会对 x 的值产生相同的影响?

a.if (x &lt; 0) x = 1;

b.if (x &lt; 20) x = 19;

c.if (x &lt; 0) x = 19;

d.if (x &lt; 20) x = 20;

e.x = 1;

对于这个问题,我对这个问题的要求有点困惑,因为答案不是我所期望的。

我选择了答案选项 b.if (x &lt; 20) x = 19;,因为 19 小于 20,并且插入“x”时其他答案选项为假。这个问题的答案其实是a.if (x &lt; 0) x = 1;。我对为什么答案选择 a. 是答案感到困惑。

【问题讨论】:

  • x 在哪里定义? x是否定义为0?
  • x的值没有给出。
  • 哦,我没看到第一行文字。
  • 我的困惑是我不确定问题在问什么,我试图解决问题的方法可能是错误的。
  • 好吧,如果 x 已被初始化为 5(或任何大于 0 的值) - 那么该语句将永远不会正确。如果它被初始化为小于 0 的值,那么该语句将只计算一次,x 将等于 1。

标签: java variables if-statement for-loop integer


【解决方案1】:

答案是。如果x 小于0,则循环将在第一次迭代中将1 分配给x。随后的迭代将没有任何影响,因为 x 将大于 0。如果 x 已经大于 0,那么这两种方法都不会改变 x 的值。

【讨论】:

  • 好吧,这是有道理的,我想我想多了这个问题。谢谢。
  • 没问题。在考虑这样的问题时,通常最好尝试向某人甚至某事解释它。它让你想得更清楚。我推荐一只橡皮鸭!
【解决方案2】:

假设 x 没有被初始化,那么在第一个循环中,只有小于 0 的 x 才会被赋值。在第一个循环中 a = 1,因此 x 将被赋值为 1,之后再也不会赋值,因为 1 > 0。

【讨论】:

    【解决方案3】:

    如果x 已被初始化为 5(或任何大于 0 的值),那么该语句将永远不会成立。例如:

    int x = 3;
    for (int a = 1; a < 20; a++)
        if (x < 0)
            x = a; // never reached
    

    如果 x 被初始化为小于 0 的任何值,那么该语句将只计算一次并且 x 将等于 1。因为在第二次迭代中: if(1 &lt; 0)false 所以 x 永远不会被再次分配。

    int x = -5;
    for (int a = 1; a < 20; a++)
        if (x < 0)
            x = a; // reached once only - x == 1 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多