【发布时间】:2020-02-20 15:38:28
【问题描述】:
我这个学期刚开始使用 Java,对它还很陌生。我正在努力获得一个数组方法来通过我的主要方法打印出任何内容。下面给出的示例来自注释,除了我添加的 main 方法中的信息,但我无法让它通过 main 方法打印任何内容,因为每次尝试编译它都会给我一个错误。
这是给出的数组方法示例:
import java.util.*;
导入 java.text.*; 公共类 ArrayDemo {
private static Random rng = new Random();
private static DecimalFormat format =new DecimalFormat();
static{
format.setMaximumFractionDigits(4);
}
public static void main(String [] args){
int num1 = 5;
arrayDemo(num1);
}
public void arrayDemo(int n){
double [] a = new double[n];
double [] c = {42, -99.9999, rng.nextGaussian() * 50};
for (int i = 0; i < a.length; i++){
a [i] = rng.nextDouble();
}
double sum = 0;
for (int i =0; i< a.length; i++){
sum += a[i];
}
System.out.println("The values add up to" + format.format(sum));
System.out.println("The elements are:" + Arrays.toString(a));
}
}
我不断收到的错误是“无法从静态上下文引用非静态方法 arrayDemo(int n)。”。
我搜索了许多有关数组的教程,但我仍然无法弄清楚为什么我不断收到此错误。任何帮助将不胜感激。
【问题讨论】:
-
它说的是:使
arrayDemo静态 -
下次不要搜索有关数组的教程,而是搜索错误消息本身。
-
因为你是新人所以要明确澄清,把方法改成
public static void arrayDemo(int n)。 -
更改您的arrayDemo 方法,如
public static void arrayDemo(int n){您的主要方法是静态类型,因为您可以找到主要方法签名(public static void main(String args[])) 和您将 arrayDemo(int n) 定义为非静态 -
@FedericoklezCulloca 这个错误不是一种发明,只是在没有进一步思考的情况下将某些东西变成静态。也许相反,OP 需要创建一个对象并在其上调用该方法。