【问题标题】:Incrimenting value DOWN wont print out增量值DOWN不会打印出来
【发布时间】:2015-04-29 20:49:36
【问题描述】:

当我从 startVal 开始递增 DOWN 并以 incVal 结束时,打印 i 的结果时出现问题。

第一个 if 语句打印正确,我认为第二个 else if 语句应该非常相似,但即使我的原始值;对于 EX:如果 startVal = 100endVal = 10incVal = -1,它会正确跳转到 else if 语句(使用基本打印语句进行测试),但 for loop 似乎不起作用并且不会打印出结果i 应该是这样的。

                if ((startVal < endVal)  &&  (incVal >= 1))
                {  
                     for (int i = startVal; i <= endVal; i += incVal)
                     {
                          System.out.println(i);
                     }

                }
                //  else if incrimenting down
                else if((startVal > endVal)  &&  (incVal <= -1))
                {
                     for (int i = startVal; i <= endVal; i -= incVal)
                     {
                          System.out.println(i);
                     }

                }

我在这里搞砸了什么愚蠢的事情吗?我在 for 循环中尝试了不同的方法来让 i 打印,但它不能以正确的方式工作..

【问题讨论】:

  • 不确定我是否理解 else/if 和循环的逻辑:如果 startVal &gt; endVal 评估为 true,则 i 被初始化为 startVal,它大于 endVal,因此 i

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


【解决方案1】:

那是因为你没有改变 else 子句中的 for 循环

for (int i = startVal; i >= endVal; i += incVal)
{
     System.out.println(i);
}

编辑:incValue 也应该增加,因为你有 i=-1,谢谢 mstbaum

【讨论】:

  • 也应该是i += incVal,因为incVal会是负数。
  • 谢谢大家! @Ryan 就像我认为我很愚蠢一样,我意识到我在 incVal 中有一个负数的主要问题,我正在尝试做-=...谢谢你告诉我哈哈
【解决方案2】:

您的问题是,如果 (startVal &gt; endVal)true,那么您的 for 循环的第一次迭代将是 false,因为 int i = startVal; i &lt;= endVal 在第一次迭代中计算为 startVal &lt;= endval

您还减少了一个负数(由您的incVal &lt;= -1 条件保证),这将导致i 实际上是因为i -= incVal

【讨论】:

    猜你喜欢
    • 2013-01-02
    • 2021-06-27
    • 2013-07-03
    • 1970-01-01
    • 2023-03-31
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多