0

所以在 Groovy 中,我试图想办法过滤掉任何奇数和混合数。当“a”是偶数时,我还想让它说“偶数”。“n”和“m”中的值是可替换的。“?”在哪里?是,是我需要帮助的地方。这是现在的代码:

n = ( 100 / 4 )

m = ( 6 * 6 )

a = (n + m)

println ( n + m )

println ( a / 2 )

if a = ?

{

        println "Even"

}

我试图用“a”来过滤混合数字和赔率,比如答案 30.5。我已经看过,我找不到任何人可以做到这一点。

当你运行它时,它会这样说:

groovy> n = ( 100 / 4 ) 

groovy> m = ( 6 * 6 ) 

groovy> a = (n + m) 

groovy> println ( n + m ) 

groovy> println ( a / 2 ) 

groovy> if a = ?

groovy> { 

groovy>     println "Even" 

groovy> } 

1 compilation error:

expecting '(', found 'a' at line: 6, column: 4

任何答案将不胜感激。谢谢!

4

3 回答 3

1

这可能会有所帮助:

boolean isEvenInteger(Number value) {
  return new BigDecimal("$value").remainder(2) == 0
}
于 2013-01-09T01:47:31.723 回答
0

另一条路线是:

if( a.toBigInteger().mod( 2 ) == 0 ) {
  println 'Even'
}
于 2013-01-09T09:35:07.330 回答
0

我很快把它放在一起,在测试用例中做类似的事情,同时让代码更加有文化……在某个地方定义通用类(不幸的名字,但这是为了快速测试代码):

@TupleConstructor
class NumClass {
    Closure<Boolean> test
    boolean isCase(Object o) { test(o) }
}

然后是一些要测试的实例:

static final NumClass EVEN = new NumClass({!(it % 2)})
static final NumClass ODD = new NumClass({it % 2})

然后可以针对使用switchin

(1..20).findAll{it in ODD}

(1..20).each{
  switch(it) {
    case EVEN:
      println "${it} is even"
      break
    case ODD:
      println "${it} is odd"
      break
    default:
      println "${it} is a mystery to me"
  }
}
于 2016-09-08T19:14:22.697 回答