我刚刚接到一个任务,要求我从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答案 0 :(得分:1)
你需要boolean mult = false;
,这样第一次循环运行时,bil
会增加3而不是2。
答案 1 :(得分:1)
首先,您不是要将布尔值与==
进行比较。因此,每次for()
循环执行时,第一个块将是mult = true
始终将true
存储在mult
中的输入...然后限定{阻止运行。
如果此分配不是故意的,那么您需要将其更改为if()
并在循环中添加一些逻辑以正确切换==
。
答案 2 :(得分:1)
基本上当它运行第一个循环时它只添加一个因为布尔值的状态而且还应该有一个==运算符来检查而不仅仅是一个=
答案 3 :(得分: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;
}