我正在尝试使用一种方法来计算直线给定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;
}
}
您的main
方法具有与calcLine
方法填充的数组不同的数组,称为line
。
您应该将 calcLine
方法的返回数组分配给main
方法的 line
变量:
line = calcLine(n,k,m);
你应该赋值calcLine(n,k,m(;
calcLine
方法中的line
和main
方法中的是完全独立的。 您需要将 line 的值分配给 calcLine
函数的返回值。
去掉主(int line[] = new int [n];
(中的行声明,并将方法调用行更改为:
int line[] = calcLine(n,k,m);
您的 calcLine 方法是使用局部变量(线(并在其中执行所有计算。然后你返回这个变量,但在你的主函数的代码中,它没有存储在任何地方。
替换行
calcLine(n,k,m);
跟
line = calcLine(n,k,m);
局部变量仅在声明的范围内处于活动状态。calcLine 中的这个"行"与主调用方函数中的"行"不同。当您返回它时,您必须将计算线的结果存储在行中,然后使用它。