以下代码:
public static void main(String[] args) {
int retval=something(3,5);
System.out.println(retval);
}
public static float something(int first, int second){
return first+second;
}
...因编译错误而崩溃:
error: possible loss of precision
int retval=something(3,5);
^
required: int
found: float
1 error
为什么函数的float类型会影响参数的类型?
UPD。不问如何改进设计,我问为什么我不能传递函数返回类型的agruments。
答案 0 :(得分:3)
返回类型不会影响参数的类型。您的错误的原因是尝试将float返回类型分配给int变量,如果没有显式转换,这是不可能的。
话虽如此,对于接受两个整数并返回其总和以返回float的方法没有多大意义。
将返回类型更改为int:
public static int something(int first, int second){
return first+second;
}
或者将参数类型更改为float:
public static float something(float first, float second) {
return first+second;
}
答案 1 :(得分:2)
那是因为你返回浮点值并尝试将其赋值给int。 请尝试以下方法:
public static void main(String[] args) {
float retval=something(3,5);
System.out.println(retval);
}
public static float something(int first, int second){
return first+second;
}
或者将somthing()
的返回类型改为int
:
public static int something(int first, int second){
return first+second;
}
但是,如果您不想更改类型,可以将返回类型强制转换为int:
public static void main(String[] args) {
int retval=(int)something(3,5);
System.out.println(retval);
}
public static float something(int first, int second){
return first+second;
}
答案 2 :(得分:0)
如果方法是计算方法,请确保参数类型和返回类型具有相同的类型。
你应该:
1
public static int add(int first, int second){
return first+second;
}
2
public static float add(float first, float second) {
return first+second;
}
因为不同的数据类型没有意义。
并记住,无论方法的返回类型如何,保存方法结果的变量都是相同的。