如何从main运行实例方法

时间:2011-10-13 20:20:01

标签: java main

很抱歉,我在这里有一个重要的大脑放屁(猜猜这是几天的小睡觉让你)。如果不将任何内容更改为静态,我如何创建一个将运行它的main()。

package merger;

import java.util.Random;

public class another {

    public int[] numbers;
    private final static int size = 100;
    private static int maxNumber = 30;
    private final static int limit = 10;
    public int number;
    private boolean Insertion = false;

    public void arraytosort(){
        numbers = new int[size];
        Random number = new Random();
        for (int i=0; i< numbers.length; i++){
            numbers[i] = number.nextInt(maxNumber);
        }
        test(numbers);
    }

    public void test(int[] array){
        this.numbers = array;
        number = array.length;
        mergesort(0,number - 1);
    }

     public void mergesort(int low, int high){
         if(Insertion || high-low < limit){
             insertionsort(low, high);
             return;
         }
         if (low<high){
             int middle = (low+high) / 2;
             mergesort(low, middle);
             mergesort(middle +1, high);
             merge(low,middle,high);
             return;
         }
     }

     public void merge(int low, int middle, int high){
         int[] temp = new int[number];
         for (int i=low;i<=high; i++){
             temp[i] = numbers[i];
         }
         int i = low;
         int j = middle+1;
         int k = low;
         while (i<=middle || j<=high){
             if (temp[i] <= temp[j]){
                 numbers[k] = temp[i];
                 i++;
             }
             else{
                 temp[k] = temp[j];
                 j++;
             }
             k++;
         }
         while (i<=middle){
             temp[k] = temp[i];
             k++;
             i++;
         }
         temp = null;
         return;
             }

     public void insertionsort(int low, int high){
         for(int i=low+1;i<=high;i++){
             int t = numbers[i];
             for(int j = i-1; j>=low; j--){
                 if(t>numbers[j]) break;
                 numbers[j+1] = numbers[j];

             numbers[j+1] = t;
             }
         }
     }

    /**
     * @param args
     */
    public static void main(String[] args){


    }
}

我只需要能够测试它,看看它是否有效。在我看来,它似乎应该有效。

由于

2 个答案:

答案 0 :(得分:5)

  

如果不将任何内容更改为静态,我如何制作一个将运行此功能的main()。

您必须创建该类的实例:

public static void main(String[] args){
    another instance = new another();
    instance.whateverMethodYouLike();
}

顺便说一句,请遵循Java约定并使用大写首字母命名类。

答案 1 :(得分:2)

public static void main(String[] args)
{
  another myObject = new another();
  myObject.arraySort(); //will call test which will call mergesort

  myObject.insertionSort(0,myObject.numbers.size()-1); //nothing calls insertion sort

}

请遵循代码约定,例如大写类名的第一个字母和方法/变量的camelCasing。

如果要查看已排序的输出,请在屏幕上打印数组。

公共变量是坏的,坏的,坏的,在你的情况下使它们成为私有的(如numbers[])......

在main方法中,您“创建”该类对象的实例,而不是直接调用方法。这是一种“特殊”方法,可以说与其他公共/私人/静态方法不同......

我建议阅读一些基本的java书,就像在java中思考一样,可以免费在线获取...