2

我刚接到一个任务,要求我从 1 到 21 重复加法,如下:

1,4,6,9,11,14,16,19,21 并得到总数。

我尝试了这段代码,但它返回为 +2 加法,它甚至绕过了 bil<=21 的先决条件

public class test
{
    public static void main(String[]args)
    {

        int bil=1;
        long total=0;
        boolean mult = true;

        for(bil=1; bil<=21;bil++)
        {
            if(mult=true)
            {
                bil+=1;
                mult=false;
            }
            else if(mult=false)
            {
                bil+=2;
                mult=true;
            }
    System.out.println(bil);
    total=total+bil;
        }
    System.out.println("----+");
    System.out.println(total);
    }
}

(如果是 TL;DR)

基本上请求是1+4+6+9+11+14+16+19+21=?

我似乎无法让这些代码工作,请帮助我?

编辑:谢谢大家,我现在明白了:D

4

4 回答 4

1

首先,您没有将布尔值与==. 因此,每次for()循环执行时,第一个块将是进入的块,因为mult = true它将始终存储truemult... 中,然后使该if()块有资格运行。

如果此分配不是故意的,那么您需要将其更改为==并在循环中放置一些逻辑以mult适当地切换。

于 2012-10-08T03:22:58.907 回答
1

您需要boolean mult = false;使循环第一次运行时bil增加 3 而不是 2。

于 2012-10-08T03:21:22.703 回答
1

基本上,当它运行第一个循环时,由于布尔值的状态,它只会添加一个,但也应该有一个 == 运算符来检查,而不仅仅是一个 =

于 2015-10-01T05:29:38.550 回答
0

尝试这个:

for (bil = 1; bil < 21; bil++) {

   if (bil % 2 == 0) { // If bil is divisible by 2, then add 2
      bil += 2;
      continue;     
   }

   bil += 3;

}
于 2012-10-08T03:23:44.980 回答