2014-08-27 3 views
0

일부 값을 계산하는 데 사용될 공용 함수를 만들고 싶습니다. ,계산 된 값을 반환하는 공용 계산 함수를 만드는 방법은 무엇입니까?

int final = Calculation(...); 

내 계산이 훨씬 더 크다 : 나는 값이 예를 들어, 함수의 출력 싶습니다 :

public void Calculation(...) 
{ 
x = y+z/2 +i; 
if(x >= 10) 
{ 
calculation = 1; 
} 
else if(x < 10) 
{ 
calculation = 0; 
} 
} 

과 이상은, 같은 다른 장소에 사용 그래서 나는 그것을 여러 곳에 두는 것을 좋아하지 않는다. 나는 그것을 더 많이 사용해야하기 때문에 그것이 한 곳에 있고 가치를 반환하기를 바란다. 내가 어떻게 이걸 만들 수 있니? 덕분에 조언.

+2

'final' 변수를 사용할 수 없습니다. 이것은 자바 키워드이며,이 계산 함수는 반환 값이 void입니다. 변수를 필요한 함수 호출로 설정하려면 주어진 변수에 대한 유형을 리턴하십시오. –

+0

아, 그래. xD 방금 입력 한 내용을 내 마음에 들었습니다 xD –

+0

@ НиколаПејић : * 현실적인 예제를 제공하는 것이 중요합니다. 뭔가를 반환하는 메서드를 작성하는 방법을 모르거나 질문이 다른 것에 관한 것인지 여부는 현재로서는 분명하지 않습니다. –

답변

1

을 현재,이 변수에 값을 할당하고 방법은 아무것도 반환하지 않음을 선언하고있다. 당신이 정적 메소드 할 수 있습니다, 방법은 어떤 상태를 필요로하지 않는 경우

public int calculate(...) 
{ 
    int x = y+z/2 +i; 
    if(x >= 10) 
    { 
     return 1; 
    } 
    else if(x < 10) 
    { 
     return 0; 
    } 
    return 2; // Or whatever... 
} 

, 그래서 당신은 선언 클래스의 인스턴스없이 호출 할 수 있습니다 : 대신, 그냥 결과를 반환해야 .

형식 자체 내에 메서드가 필요한 경우; 그것을 비공개로 만들자. 당신이 유형 hiearchy 안에 그것을 필요로하는 경우에, 그것을 보호하십시오. 동일한 패키지 내에서이 패키지가 필요한 경우 기본 액세스 권한을 부여하십시오 (수정 자 없음). 어디에서나 필요할 경우 공개하십시오.

1

메소드를 정적으로 만들고 유틸리티 클래스에 넣으십시오.

public class CalculationUtils 
{ 
    public static someReturnType yourMethod (...someParams...) 
    { 
     .... 
     return ... 
    } 

} 

그런 다음 사용하는 다른 클래스에서 액세스 할 수 있습니다

someReturnType varName = CalculationUtils.yourMethod(...params...); 
+0

추가하는 것을 잊어 버렸습니다. 안드로이드와 개발에 익숙하지 않아서 어떻게해야할지 모르겠군요. xD –

1

Utils이라는 클래스를 선언하면이 클래스는 어디에서나 호출 할 수있는 정적 메서드를 갖게됩니다. 이와 같이 :

public class Utils 
{ 
    public static Integer calculationMethod(params) 
    { 
     int calculation = 0; 
     x = y+z/2 +i; 
     if(x >= 10) 
     { 
      calculation = 1; 
     } 
     else if(x < 10) 
     { 
      calculation = 0; 
     } 

     return calculation; 
    } 
} 

이 메서드는 Utils 클래스 또는 클래스 외부에서 호출 할 수 있습니다.

  1. 유틸 클래스 내에서 호출 :

  2. Integer value = calculationMethod(params);가의 Utils 클래스 외부에서 호출 :

    Integer value = Utils.calculationMethod(params);

를 자세한 내용은 정적 메서드는 this를 참조에 대해.

5

Util이라는 새 클래스를 만들고이 메서드를 추가하십시오.

public class Util { 

    public static int Calculation(int x, int y, int z, int i) { 
     int calculation=0; 
     x = y + z/2 + i; 
     if (x >= 10) { 
      calculation = 1; 
     } else if (x < 10) { 
      calculation = 0; 
     } 

     return calculation; 
    } 
} 

어디에서나 다음과 같이 부를 수 있습니다.

int final_value = Util.calculation(1,2,3,4); 
1

이 시도 :

public class Utitlity 
{ 
    public int static calculateAndReturnSomeValue(int x, int y, int z, int i) 
    { 
     //do some calculations here 

     int calculation = 0; 

     x = y+z/2 +i; 

     if(x >= 10) 
     { 
      calculation = 1; 
     } 
     else if(x < 10) 
     { 
      calculation = 0; 
     } 

     return calculation; 
    } 

} 

을 이제는 당신이 그것을 사용하려고 할 때이 작업을 수행 할 수 있습니다

int result = Utility.calculateAndReturnSomeValue(2, 4, 6, 9); 

나는이 도움이되기를 바랍니다.

+0

'int calculation = 0;'이 필요합니다. 그렇지 않으면 널 포인터가 생깁니다. 이 코드에서 ... –

0

감사합니다. 나는 그것을했다. 나는 ..., 그것을 작동하는 것 같다 지금과 같은

public int Izracunavanje(int rezultat) 
    { 

     ... 

     rezultat = ...; 
    return rezultat; 
} 

를 사용하고 내가 다른 기능에 전화를 할 때, 그것은 같은 것입니다 :

rezultat = Izracunavanje(rezultat); 

너무 감사합니다!

관련 문제