如何定义运行Java程序的主要方法?

时间:2015-05-13 12:11:25

标签: java methods main

我希望将Eclipse中的以下代码作为Java Application运行,并且需要使用main方法进行定义。在所有的尝试中,我自己都收到了一条消息:

  

方法TemperatureNormalizer()对于TemperatureNormalizer类型

是未定义的

你能帮我写一下吗?

import java.util.Arrays;
public class TemperatureNormalizer {
   private double[] data;

   public TemperatureNormalizer(double[] list) {
       data = list;
   }

   public static void main(String[] args) {
       TemperatureNormalizer();
   }

   public double getAdjustedAverage() {
       double max = getMax();
       double min = getMin();
       double sum = getSum();

       int insertAt = 0;

       for (int i = 0; i < data.length; i++) {

           if (data[i] == max || data[i] == min) {
               for (int j = i; j > insertAt; j--) { 
                   data[j] = data[j - 1];
               }
               data = Arrays.copyOf(data, data.length - 1);
           }    
       }
       return (sum - max - min) / data.length;
   }

   public double getMax() {
        double current = 0;
        for (int i = 0; i < data.length; i++) {
            if (data[i] > current) {
                current = data[i];
            }
        }
        return current;
    }

    public double getMin() {
        double current = data[0];
        for (int i = 0; i < data.length; i++) {
            if (data[i] < current) {    
                current = data[i];  
            }   
        }
        return current;
    }

    public double getSum() {
        double sum = 0;
        for (double d : data) {
            sum = sum + d;
        }
        return sum;
    }
}

5 个答案:

答案 0 :(得分:1)

在main方法中,初始化对象:TemperatureNormalizer temperatureNormalizer = new TemperatureNormalizer();

另外,你的类TemperatureNormalizer有一个构造函数,它需要一个Double数组。在main方法中给出一个数组,或者创建一个不带参数的额外构造函数。

public TemperatureNormalizer()
{
  // do stuff (or not)
}

答案 1 :(得分:0)

  1. 您需要在main方法中创建类的Object。您已经创建了参数化构造函数,因此编译器不会创建默认构造函数。你必须为此编码。

    public TempratureNormalizer(){
     // implementation here...
    }
    
    TempratureNormalizer TempNorm = new TempratureNormalizer();
    
  2. 如果您正在调用参数化构造函数

    TempratureNormalizer(double[] list)
    

    那么主要方法应该是

    double[] list = {2.0,3.45,1.09} // give your dynamic values
    TempratureNormalizer TempNorm = new TempNormailzer(list);
    

答案 2 :(得分:0)

您应该创建一个包含所有操作的测试类:

class Test{
    public static void main (String[] args){
        TemperatureNormalizer temperatureNormalizer = new TemperatureNormalizer();
   }  
}

如果所有类都在同一个文件夹中,编译器就没有问题。

答案 3 :(得分:0)

如果您只想运行此程序,请按如下方式更改程序中的main方法:

public static void main(String[] args) {
       double  a1[] = {1,2,3,4};
       TemperatureNormalizer temp = new TemperatureNormalizer(a1);
       System.out.println("Avg:" + temp.getAdjustedAverage());
   }

它会输出:

Avg: 1.6666666666666667

答案 4 :(得分:0)

主要方法是静态方法,它只能用于静态和初始化数据。您应该将变量“data”和方法temp规范化为static,或者生成当前类的实例。 但是,对我来说,你应该正确地编写代码(在结构挖掘中)。为您的功能创建新类,并使用main方法在类中创建它的实例。