类型转换时Java中的编译错误

Hey*_*yyo 0 java

虽然我试图用我的函数返回值进行类型转换,但我在Java中遇到了编译错误

 public  short subtractNumbers (short a, byte b, float k )
 {
       short result=short(a+b-k);
       return result;
 }
Run Code Online (Sandbox Code Playgroud)

对于上面编写的代码片段,我从编译器获取错误语句,如下所示:

 error: '.class' expected
  short result=short(a+b-k);
                    ^
  error: not a statement
  short result=short(a+b-k);
                     ^
  error: ';' expected
  short result=short(a+b-k);
                      ^
Run Code Online (Sandbox Code Playgroud)

这可能是什么问题,错误陈述背后的逻辑是什么?在此先感谢您的帮助,我将非常感激.

JB *_*zet 6

这不是类型转换的语法.正确的语法是

short s = (short) someValue;
Run Code Online (Sandbox Code Playgroud)

并不是

short s = short(someValue);
Run Code Online (Sandbox Code Playgroud)

所以你要

short result = (short) (a + b - k);
Run Code Online (Sandbox Code Playgroud)

  • 如果OP想知道为什么他需要用括号包装`a + b - k`:因为`(短)a + b - k`只会将'a`强制转换为short,而不是计算结果. (4认同)