2013-10-28 121 views
2

对不起,如果这个问题似乎很不好。C程序概念

我无法找出解决此问题的最佳方法。

下面是代码的基本思想:

int iterator = 0; 

    if ((iterator % 2) == 1){ 
    // do first option 
    iterator++; 
    return; 
    } else if ((iterator % 2) == 0){ 
    // do second thing 
    iterator++; 
    return; 
    } else if ((iterator % 3) == 0){ 
    // do third option 
    iterator++; 
    return; 
    } else{ 
    // error 
    return; 
    } 

本质的功能将被称为1次(它是一个卵石watchapp)。

我可以得到前两个选项的工作,但我有第三个的麻烦。我认为这是因为%3太模糊。

你们会怎么做?

+3

什么你真的想要吗? %3毫不含糊。你永远不会得到它,因为前两个选项覆盖所有数字。 – sashkello

+0

您应在检查%1之前检查%3。 – enhzflep

+0

@sashkello基本上它是watchapp将时间分解为块并每秒显示一块。因此,'一二五'将显示为'一''二十五'每秒一个字。对困惑感到抱歉。 – lkemitchll

回答

4

这是你以后在做什么?

if ((iterator % 3) == 0){ 
    // do first option 
} else if ((iterator % 3) == 1){ 
    // do second thing 
} else if ((iterator % 3) == 2){ 
    // do third option 
} 
iterator++; 

这可以被改写为:

switch (iterator++ % 3) { 
case 0: 
    // first option 
    break; 
case 1: 
    // second option 
    break; 
case 2: 
    // third option 
} 
+0

完美谢谢你,我觉得很失望。 – lkemitchll

4

你永远没有第三种选择,因为迭代%2可以是0或1

1

%2会给你只有两种选择。

,你也可以尝试不同的结构

switch (iterator%3) 
{ 
    case 0: // option 0 
    break; 
    case 1: // option 1 
    break; 
    case 2: // option 2 
    break; 
    default: 
    break; 
} 
++iterator; 
+0

感谢您的回复,不敢相信我会如此坚持。咖啡是必需的。 – lkemitchll