我怎样才能在 9、109 和 209 等处做某事,在 99、199 和 299 等处做其他事情,以及在以 9 结尾的所有其他动作中执行一系列其他动作?

Der*_*nce 0 math if-statement dart

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

我还有 4 种声音,每次乐谱达到以 19、29、39、49、59、69、79 和 89 结尾的数字时,它们会依次播放。

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

我的代码有效,但我觉得应该有一种更优雅的方法。

          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');
          }
Run Code Online (Sandbox Code Playgroud)

想法?请帮助我像程序员一样思考这个问题。:D

Jon*_*oni 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
}
Run Code Online (Sandbox Code Playgroud)