2011-07-03 6 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

, 당신의 새로운 클래스에 당신이이를 호출 할 수 있습니다 함수는 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

또 다른 클래스의 ma in() 메서드는 Numbers 클래스의 객체를 만들고 원하는 메서드를 호출합니다.

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

난 당신이 별도의 클래스에서 실행 무슨 뜻인지 모르겠지만, 당신은 다른 클래스에서이 함수를 호출 할 경우, 당신은 그 정적해야한다 :

public static int min(... 

그런 다음 당신이 그것을 호출 :

int m = Numbers.min(... 

원하는 곳에서.

관련 문제