2013-03-29 3 views
0

이 함수에서 나는 y이 0이 아닌 경우 두 개의 다른 데이터 형식이 반환해야하며 하나는 float이고 0이면 부울입니다. 함수에서 두 개의 다른 데이터 형식을 반환

public XXXXX division(int x, int y){ 
    if(y!=0){ 
     return x/y; 
    } 
    else{ 
     return false; 
    } 
} 

은 내가, 그것은 가능 내가 한 함수를 원하는 정확한 구분을 계산 부문 2의 두 가지 기능 1 체크 보정을 사용하여이를 구현 수 있다는 것을 알고?

답변

5

허용되어서는 안된다. "어떤 결과를"의미없는 null를 사용하여,

public float division(int x, int y) { 
    if (y != 0) { 
     return ((float) x)/y; 
    } 
    else { 
     throw new IllegalArgumentException("division by 0 makes no sense"); 
    } 
} 
1

반환 유형으로 Double을 사용하고 값을 정상적으로 반환 할 수 있습니다. false의 경우는 null을 돌려 준다

2

그런 식으로 하나의 방법을 사용하는 것이 좋은 방법인지 잘 모르겠습니다. 그러나 결과와 오류를 속성으로 사용하여 자신의 클래스를 만든 다음 해당 클래스의 개체를 메서드에서 반환 할 수 있습니다.

1

제수 0을 통과하는 가장 간단한 방법 -이

public Object division(int x, int y) { 
    if (y != 0) { 
     return x/y; 
    } else { 
     return false; 
    } 
} 
+0

x/y는 (이중) x/y 여야합니다. –

+0

해석 방법에 대한 결과가 어떻게 되나요? – Jabir

+0

호출 코드가이를 처리해야합니다. 그냥 반환 된 객체의 유형/인스턴스를 확인하십시오. –

1

당신은 Float를 반환 할 수 있습니다 : 당신은 대신이 경우에는 false를 반환의 예외를 발생한다이 특정한 경우에,

public Float division(int x, int y) { 
    if(y != 0) { 
     return x/(float)y; 
    } else { 
     return null; 
    } 
} 

말했다 실제로 수도 IEEE 무한대 또는 NaN을 반환하는 것이 좋습니다.

정수 구분은 사용자가 원하는 것이 아니라는 소리로 고정되어 있습니다.

1

아마 당신은 확인해야합니다 그것은 이전 :

의사 코드

if(y!=0){

division(x/y)

}else{

Cannot divide by 0

말할 수

}

2

함수 자체를 호출하기 전에 Y의 값이 0인지 아닌지 확인할 수 있습니다. 해당 함수에 0을 전달하지 마십시오.

어쨌든 0으로 나누기 함수에 0을 전달하면 상황은 ArithmaticException이됩니다. 따라서 함수는 호출자에게 예외를 던질 수 있습니다.

public float division(int x, int y) throws Exception { ///ArithmaticException 
    return ((float) x)/y; 
} 
관련 문제