2011-07-03 47 views
0

所以我需要从第二个类运行这个类。我怎么做?这是我想从一个单独的类运行代码:从一个单独的类运行

import java.util.*; 

public class Numbers { 

    int min(int a, int b, int c, int d, int e) { 
     int min1 = Math.min(a, b); 
     int min2 = Math.min(c, d); 
     int min3 = Math.min(min1, min2); 
     int min4 = Math.min(min3, e); 

     return min4; 
    } 
    int max(int a, int b, int c, int d, int e) { 
     int max1 = Math.max(a, b); 
     int max2 = Math.max(c, d); 
     int max3 = Math.max(max1, max2); 
     int max4 = Math.max(max3, e); 

     return max4; 
    } 
    double avg(int a, int b, int c, int d, int e) { 
     double average = (a+b+c+d+e)/5; 

     return average; 
    } 
    double stddev(int a, int b, int c, int d, int e) { 
     double average = (a+b+c+d+e)/5; 
     double a1 = Math.pow((a-average),2); 
     double b1 = Math.pow((b-average),2); 
     double c1 = Math.pow((c-average),2); 
     double d1 = Math.pow((d-average),2); 
     double e1 = Math.pow((e-average),2); 
     double average2 = (a1+b1+c1+d1+e1)/5; 
     double x; 
     x = Math.sqrt(average2); 
     return x; 

    } 

} 
+4

看起来好像这些都是实用方法,并且类本身没有状态(没有实例字段)。这表明上述方法应该是静态方法。 –

+0

我同意气垫船。 –

回答

3

某处在另一个类,实例化这个类,并调用适当的方法:

Numbers instance = new Numbers(); 
int maxValue = instance.max(1, 2, 3, 4, 5); 
2

中的其他类创建这个类的一个对象(注意:在同一个包中)。

这样,

Numbers n = new Numbers(); 
int minimum = n.min(10,20,30,40,50); 
System.out.println(minimum);   // Prints 10 
int maximum = n.max(10,20,30,40,50); 
System.out.println(maximum);   // Prints 50 
double average = n.avg(10,20,30,40,50); 
System.out.println(average);   // Prints 30 
double dev = n.devstd(10,20,30,40,50); 
1

如果你的类是在同一包(如果你使用Eclipse中的默认设置,例如,那么这将是),然后在你的新类,你可以调用这些功能就像您使用Math.pow

double l_stddev = Numbers.stddev(1,2,3,4,5); 

例如。

编辑:糟糕 - 错过了这些不是静态方法。你可以让它们在你的Numbers类中是静态的,那么你就不需要创建一个对象来调用它们(就像事实上的Math类一样)

所以如另一个答案所说,需要制作一个Number对象。

3

你的意思是调用Numbers类中的方法?你可以这样做如下:

public Main{ 
    public static void main(String[] args){ 
      Numbers numbers = new Numbers(); // Instance 

      int minimum = numbers.min(1, 2, 3, 4, 5); 
      System.out.println("minimum:" + minimum); 

      int maximum = numbers.max(1, 2, 3, 4, 5); 
      System.out.println("maximum:" + maximum); 

      double average = numbers.avg(1, 2, 3, 4, 5); 
      System.out.println("average:" + average); 

      double standardDev = numbers.devstd(1, 2, 3, 4, 5); 
      System.out.println("standard deviation:" + standardDev); 
    } 
} 

更重要的是,让那些静态的方法,因为它们不依赖于任何属性:

public static int min(int a, int b, int c, int d, int e) { 
    int min1 = Math.min(a, b); 
    int min2 = Math.min(c, d); 
    int min3 = Math.min(min1, min2); 
    int min4 = Math.min(min3, e); 

    return min4; 
} 

public Main{ 
    public static void main(String args[]){ 
      int minimum = Numbers.min(1, 2, 3, 4, 5); 
      System.out.println("minimum:" + minimum); 
    } 
} 

额外的奖励与更广泛的专用方法:

public static int min(int[] intArray) { 
    // If empty/null array throws Exception. Caller/supplier should handle this. 
    int min = intArray[0]; 

    for(int i = 1; i < intArray.length; i++){ 
      min = Math.min(min, intArray[i]); 
    } 

    return min; 
} 
1

在另一个班,在马in()方法创建Numbers类的对象并调用所需的方法。

Numbers obj=new Numbers(); 
    obj.max(a, b, c,d ,e); 
1

我不知道你从一个单独的类运行的意思,但如果你想从另一个调用类的这些功能,你应该让他们静:

public static int min(... 

然后调用它:

int m = Numbers.min(... 

从任何你想要的地方。