-1

下面是我正在调用的函数,但无论我通过什么,它都会返回 0。

public static Double calc(double methods, double attributes) {
    double a=0;
    for (int i=0;i<k;i++) {
        for (int j=0;j<l;j++) {
        if(matrix[i][j]==1)
                a++;
        }
     }          
    Double v= new Double( a/(methods*attributes));
    System.out.println("The value of v = " + v.doubleValue() );
    return v.doubleValue();
}

System.out语句在函数中打印正确的值,但返回值打印 0.0。

4

2 回答 2

0

我已经运行了一个演示:

public class demo1{
public static Double calc(double methods, double attributes) {
    double a=0;
    int k=2;
    int l=2;
    //int[][] matrix=new int[2][2];
    //int 
    int[][] matrix={{1,2},{2,1},{2,2},{2,2}};
    for (int i=0;i<k;i++) {
        for (int j=0;j<l;j++) {
        if(matrix[i][j]==1)
                a++;
        }
     }          
    Double v= new Double( a/(methods*attributes));
    System.out.println("The value of v = " + v.doubleValue() );
    return v.doubleValue();

}

public static void main(String s[]){

Double x = calc(2.0,3.0);       
System.out.println(x);
}


}

输出如下:

The value of v = 0.3333333333333333

0.3333333333333333 

所以它没有返回 0.0。

于 2012-10-19T14:19:00.540 回答
0

我从你的函数中取出了循环(它所做的只是给 a 一个值)。我添加了一个主要的(见下文)。

返回工作正常。也许问题在于您如何使用返回值?

public class Test {

    public static Double calc(double methods, double attributes) {

        double a=2.0;

        Double v= new Double( a/(methods*attributes));
        System.out.println("The value of v = " + v.doubleValue() );
        return v.doubleValue();

    }

    public static void main(String [] args) throws Exception
    {       
        Double x = calc(2.0,3.0);       
        System.out.println(x);  
    }

}
于 2012-10-19T13:59:28.947 回答