2011-07-03 14 views
0

したがって、私はこのクラスを2番目のクラスから実行する必要があります。それ、どうやったら出来るの?ここで私は別のクラスから実行したいコードは次のとおりです。別のクラスから実行

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クラスで静的にすることができます(実際には数学クラスのように)呼び出すオブジェクトを作成する必要はありません。

他の答えによれば、そのままクラス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

別のクラスでは、ma in()メソッドは、Numbersクラスのオブジェクトを作成し、目的のメソッドを呼び出します。

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

私はあなたが別のクラスからの実行によって何を意味するのか分からないが、あなたは別のクラスからこれらの関数を呼び出したい場合は、それらを静的にする必要があります。

public static int min(... 

次に、あなたはそれを呼び出します:

int m = Numbers.min(... 

どこからでも。

関連する問題