有什么办法能让我把它缩短一点吗?

本文关键字:一点 什么 | 更新日期: 2023-09-27 18:10:48

我正在业余时间学习如何使用unity,通过阅读一本初学者的书,并在书中上网查找资料。

创建一个脚本,将数字从1到10输出到控制台,但不输出3和5的任何倍数,而是输出短语"programming is awesome"

而我已经完成了这个任务通过使用这个代码

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);
    }
}

}   

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

有什么办法能让我把它缩短一点吗?

您希望在此任务中使用模数运算符(%)。它返回除法的余数,所以当模数运算的结果为0时,你就知道你得到了除数的倍数。

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

也可以使用三元运算符

这个练习的要点是,您应该计算倍数,而不仅仅是为每个您知道是倍数的值设置一个条件。

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

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

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

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

现在您应该能够对5也做同样的事情,并将其合并到您的代码中。

操作方法

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));