繁体   English   中英

Java-循环

[英]Java - For-loop

我正在为学校的作业写一个for循环。 循环将写入最小编号,例如。 26,并且将在循环中每转7圈增加一次,直到达到最大值,例如。 112.在每个数字之间,还会在逗号之间写上“,”。 但不在最后一个数字之后。

现在,我的代码如下所示:

int min=26;
int max=112;

for(int i=min; i<=max; i+=7)
{
   if(i!=max)
   {
      System.out.print(i+", ");
   }
   else
   {
      System.out.print(i);
   }

}

现在最后一个数字会有一个逗号...我的问题在哪里?

其他人解释说, i可能永远不会等于max 对于这样的情况,等待下一次循环迭代以打印逗号会更容易:

for(int i=min; i<=max; i+=7)
{
   if(i!=min)
   {
      System.out.print(", "+i);
   }
   else
   {
      System.out.print(i);
   }

}

(通常,我将设置一个单独的boolean first以查看是否要进行第一次迭代;在循环之前将其设置为true ,在循环结束时将其设置为false 。)

PS还有其他方法可以解决此问题,例如更改i==max条件或计算实际最大值。 但是,上述方法可用于许多情况,这些情况与以固定量步进没有任何关系,并且在循环停止之前可能很难事先弄清楚。

它永远不会进入else循环,因为在您的代码中max = 112 ,但是您的for循环不会达到该值。 (以7为增量达到110 )。 因此,它将仅执行“ if”循环并以逗号打印字符串,然后退出。

由于“ i”永远不会等于“ max”,因此不会执行else子句。
如果“最小值”始终小于“最大值”,那么您还可以执行以下操作:

int min=26;
int max=112;

System.out.print(min);
for(int i=min+7; i<=max; i+=7)
{
    System.out.print("," + i);
}

在12个循环之后:26 + 7 * 12 =110。它将退出循环,并且永远不会满足第二个条件。

int min=26;
int max=112;

for(int i=min; i<=max; i+=7) {
    if(i <= max-7)
        System.out.print(i+", ");
    else
        System.out.print(i);
}

鉴于您的增量步长y 7 ,在循环的最后一次迭代中, i可能不等于max 实际上,您的循环从26112 ,即86 ,不是7倍数。

如果您根据最小和步进来计算最大值,则应该没问题,例如-

int step = 7;
int min = 26;
int max = min * step;

for(int i = min; i <= max; i += step)

最大值是112,最小值是26。每次迭代都将增加7。 如果从112中减去26,您将看到结果不是7的倍数,这意味着当i恰好是112时循环不会停止。相反,循环在i达到值112之前结束。这就是为什么在其中看到逗号的原因打印字符串的末尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM