方法不返回数组的正确值。我究竟做错了什么?

时间:2014-12-17 21:13:30

标签: java arrays methods return

我正在尝试使用一种方法为直线给定x的1和x之间的所有值计算y。

我希望y的值放在一个数组中并返回到main方法。当我运行我的程序时,数组中的所有值都是0;我哪里出错?

谢谢!

import java.util.Scanner;
public class HelloWorld {
    public static void main(String [] args)
        {
            int n=0;
            int k=0;
            int m=0;
            Scanner in = new Scanner(System.in);

            System.out.println("Value of x: ");
            n = in.nextInt();

            int line[] = new int [n];
            System.out.println("value of k: ");
            k = in.nextInt();

            System.out.println("Value of m: ");
            m = in.nextInt();

            calcLine(n,k,m);
            for(int i = 0; i < line.length; i++){ 
                System.out.println(line[i]);  
            }
        }

    public static int[] calcLine(int n, int k, int m)
    {
        int[] line = new int[n];

        for (int i=0; i<line.length;i++){
            line[i] = (int) (k * i + m);
        }

        return line;
    }
}

4 个答案:

答案 0 :(得分:6)

您的main方法有一个名为line的数组,而不是calcLine方法填充的数组。

您应该将calcLine方法的返回数组分配给line方法的main变量:

line = calcLine(n,k,m);

答案 1 :(得分:0)

你应该分配calcLine(n,k,m);行

答案 2 :(得分:0)

line方法中的calcLinemain方法中的calcLine完全分开。您需要将line的值分配给int line[] = new int [n];函数的返回值。

摆脱main(int line[] = calcLine(n,k,m);)中的行声明,并将方法调用行更改为:

{{1}}

答案 3 :(得分:0)

您的calcLine方法使用局部变量(line)并在其中执行所有计算。然后返回此变量,但在主函数的代码中,它不会存储在任何位置。

替换

calcLine(n,k,m);

line = calcLine(n,k,m);

局部变量仅在声明的范围内存在。 calcLine中的这个“行”与主调用函数中的“行”不同。返回时,必须将calcLine的结果存储在行中然后再使用它。