如何保持不同类型的函数和参数

时间:2015-04-21 09:53:48

标签: java function

以下代码:

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。

3 个答案:

答案 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;
}

因为不同的数据类型没有意义。

并记住,无论方法的返回类型如何,保存方法结果的变量都是相同的。