有什么方法可以缩短它

时间:2014-06-30 23:50:50

标签: c# scripting unity3d

我正在学习如何在闲暇时间阅读一本初学者书并在书中在网上查找有问题的练习。

  

创建一个脚本,将1到10之间的数字输出到控制台,但不输出3和5的任何倍数,而是输出短语"编程很棒"

虽然我已使用此代码完成此任务

using UnityEngine;
using System.Collections;

public class Loops : MonoBehaviour {

// Use this for initialization
void Start () {

    for(int i = 1; i <= 10; i++)
    {
        if(i == 3 )
            print ("Programming is Awesome!");
        else if (i == 5)
            print ("Programming is Awesome!");
        else if (i == 6)
            print ("Programming is Awesome!");
        else if (i == 9)
            print ("Programming is Awesome!");
        else if (i == 10)
            print ("Programming is Awesome!");
        else
            print (i);
    }
}


}   

我想知道是否有任何方法只能通过使用更少的代码行来实现相同的结果

4 个答案:

答案 0 :(得分:1)

您希望将模数(也称为模数)运算符(%)用于此任务。它返回除法的余数,因此当模数运算的结果为0时,你知道你有一个除数的倍数。

for (int i = 1; i <= 10; i++)
{
    if(i % 3 == 0 || i % 5 == 0)
        print("programming is awesome");
    else
        print(i);
}

答案 1 :(得分:1)

这个练习的目的是你应该计算倍数,而不是只为你知道的每个值做一个条件。

使用模运算符检查数字是否是另一个数字的偶数倍。这显示了模运算符为某些值返回的内容:

 i    i % 3
------------
 1      1
 2      2
 3      0
 4      1
 5      2
 6      0
 7      1

如您所见,当i % 3是三的倍数时,0评估为i。您可以使用它来检查数字是否是三的倍数:

if (i % 3 == 0) {
  print ("Programming is Awesome!");
}

现在你应该能够为五个人做同样的事情,并将其合并到你的代码中。

答案 2 :(得分:1)

  for (int i = 1; i <= 10; i++)
        {
            print((i % 3 == 0 || i % 5 == 0)? "programming is awesome" : i));
        }

还使用三元运算符检查。

答案 3 :(得分:0)

这样做的方法

if(i == 3 || i == 5 || i == 6 || i == 9 || i == 10){
    print ("Programming is Awesome!");
}
else {
    print (i);
}

更好的方式使用模运算符

if( i % 3 == 0 || i % 5 == 0){
    print ("Programming is Awesome!");
}
else {
    print (i);
}

使用也可以尝试

print((i % 3 == 0 || i % 5 == 0)? "Programming is Awesome!" : i));