문제는 0보다 작거나 같은 정수가 'end'에 대한 매개 변수로 전달되고 'end'가 'start'보다 작은 경우 -1을 반환하지 않는다는 것입니다.
public static boolean isOdd (int number)
{
if (number < 0)
{
return false;
}
else
{
if (number % 2 != 0 )
{
return true;
}
else
{
return false;
}
}
}
매개 변수 '시작'과 '종료'를 테스트하는 방법입니다.
public static int sumOdd (int start, int end)
{
int sum = 0;
for (int i = start; i<=end; i++)
{
if ((start<=0) || (end<=0) || (end<start))
{
return -1;
}
else
{
if (isOdd(i))
{
sum+=i;
}
}
}
return sum;
}
문제는 for
루프에 있습니다.
i
이보다 작거나 같을 때 루프를 실행하도록 지시 했습니다 end
. 서류 상으로는 좋게 들리지만이 진술은
if ((start<=0) || (end<=0) || (end<start))
(경우에 실행되지 않습니다 end
보다 큰 start
부터) i
입니다 start
, 그리고 경우 end
보다 큰 start
, 그것보다, 따라서 더 큰 i
, for 루프에서 이전 정의 된 조건을 만족하지 것이다, i is smaller or equal to end
. 따라서 for
루프가 실행되지 않습니다.
다음을 수행해야합니다.
public static int sumOdd(int start, int end) {
int sum = 0;
if ((start <= 0) || (end <= 0) || (end < start)) {
return -1;
} else {
for (int i = start; i <= end; i++) {
if (isOdd(i)) {
sum += i;
}
}
return sum;
}
}
테스트 실행
sumOdd(1, 0)
보고 -1
sumOdd(1, 3)
보고 4
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다