错误:二元运算符的错误操作数类型' - '

时间:2015-08-29 02:27:31

标签: java math

这是我的源代码:

Compilation error   time: 0.1 memory: 320512 signal:0
Main.java:37: error: bad operand types for binary operator '-'
    System.out.println( "a - b is " + a - b );
                                        ^
 first type:  String
 second type: int
Main.java:46: error: bad operand types for binary operator '-'
    System.out.println( "aD - bD is "  +aD - bD );
                                           ^
first type:  String
second type: double
2 errors

这是我的错误:

WebKeys.exportedMappings in Assets :=
  (WebKeys.exportedMappings in Assets).value map { case (file, string) =>
    import org.webjars.WebJarAssetLocator.WEBJARS_PATH_PREFIX
    val prefix = s"${WEBJARS_PATH_PREFIX}/${moduleName.value}/${version.value}/"
    (file, string.replace(prefix, ""))
  }

我是java的新手,我仍在计算算术。我以为我做得很好,但我不明白出了什么问题。这很可能是一个真正的新手错误,但你能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:3)

"a - b is " + (a) - (b)`

表示:

("a - b is " + (a)) - (b)

。左侧部分(("a - b is " + (a)))是一个字符串,您无法从字符串中减去。

您需要使用括号:

"a - b is " + (a - b)

答案 1 :(得分:0)

+-考虑作为字符串操作,其中表达式从左到右进行评估。为了避免这种情况,标记减法带有高优先级,当你用()

包围时会发生这种情况
    System.out.println( "a - b is " + (a - b) );

现在由于优先级,括号(a-b)内的表达式首先计算,然后从左到右计算整个表达式。