如何在9、109和209等处执行其他操作,在99、199和299等处进行其他操作,以及对以9结尾的所有其他操作执行一系列其他操作?

时间:2020-08-08 15:04:28

标签: if-statement math dart

每当得分达到以09结尾的数字时,我都会播放1种声音。

每次得分达到以19、29、39、49、59、69、79和89结尾的数字时,我也会依次播放4种声音。

然后我每次得分达到以99结尾的数字时都会播放1种声音。

我的代码有效,但是我觉得应该有一种方法可以更优雅地做到这一点。

          if (score == 9 || score == 109 || score == 209 ...) {
            play('sound1.mp3');
          }
          if (score == 19 || score == 59 || score == 119 || score == 159 ...) {
            play('sound2.mp3');
          }
          if (score == 29 || score == 69 || score == 129 || score == 169 ...) {
           play('sound3.mp3');
          }
          if (score == 39 || score == 79 || score == 139 || score == 179 ...) {
            play('sound4.mp3');
          }
          if (score == 49 || score == 89 || score == 149 || score == 189 ...) {
            play('sound5.mp3');
          }
          if (score == 99 || score == 199 ...) {
            play('sound6.mp3');
          }

想法?请像程序员一样帮助我考虑一下。 :D

1 个答案:

答案 0 :(得分:5)

9、109、209等之间的共同点是,除以100会得到 9的余数

99、199、299等之间的共同点是,除以100会得到 99的余数

在Dart中,余数由模运算符%计算。

var remainder = score % 100;
if (remainder == 9) {  
  // 9, 109, 209, ...
} else if (remainder == 99) { 
  // 99, 199, 299, ...
} else if (score % 10 == 9) { 
  // other numbers ending in 9
}