【问题标题】:How to create an array object in the main method in java? [duplicate]如何在java的main方法中创建一个数组对象? [复制]
【发布时间】: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 需要创建一个对象并在其上调用该方法。

标签: java arrays methods


【解决方案1】:

Main-Method 是一个静态方法,所以将你的方法设为静态,然后你就可以调用它了..

public static void arrayDemo(int n){

 ...

}

【讨论】:

    【解决方案2】:

    您不能从静态方法调用非静态方法。由于main是静态方法,所以不能使用非静态的arrayDemo方法。

    ma​​in 是静态的原因是,因为可以在不创建类对象的情况下调用静态方法,这一点很重要,因为 main 是程序的入口点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2012-08-23
      • 2015-12-07
      相关资源
      最近更新 更多