2012-10-08 4 views
1
public class negativeTest { 

    public static int Negativenum (int[] array) { 

     int negative = 0; 
     for (int i = 0; i < array.length; i++){ 
      if(array[i] < 0){ 
       negative = negative + 1; 
      } 
      System.out.println(negative); 

     } 

    } 

} 

배열의 몇 요소가 음수인지 계산하려고합니다. 이것은 내가 지금까지 가지고있는 것이다. 내 질문은 : 이클립스는 내가 정적 int 대신 void를 반환해야한다고 말하고 있습니까? void를 사용하지 않고 이것을 어떻게 할 수 있습니까?배열의 음수를 계산할 수있는 메서드를 만듭니다.

나는이 작업이 그들을 양수와 음수 배열을 만들고 계산이다 얻을 수

public static int negativenum(int[] array){ 

만의 방법을 사용할 것입니다,하지만 난이없는 것을 수행 방법을 가질 수 있도록하려면 숫자 배열 만들기. 나 좀 도와 줄 수있어?

+2

아마 아무 것도 반환하지 않기 때문에 불평 할 수도 있습니다. –

답변

1

int을 반환 할 것으로 예상되는 함수에서 아무 것도 반환하지 않기 때문에 오류가 발생했습니다. 당신이 음수의 수를 계산하고 함수의 호출자가 수를 얻을 수 있도록 수를 반환하는 기능을 원하는 경우

, 당신은 함수의 종료 전에

return negative; 

를 추가 할 수 있습니다.

당신은 함수 호출의 일부, 당신은에서 함수의 반환 유형을 변경할 수있는 기능에서 아무것도 반환 단지 수를 인쇄 할 싶지 않아 또는 경우 intvoid에 :

public static void Negativenum (int[] array) { 
1

return 문을 제공하면 반환 값 매개 변수로 int가 필요합니다. 따라서 컴파일러 오류가 발생합니다. 당신은 클래스 내부의 main 기능을 선언하지 않았기 때문에 당신이 점점

public class negativeTest { 

    public static int Negativenum (int[] array) { 

     int negative = 0; 
     for (int i = 0; i < array.length; i++){ 
      if(array[i] < 0){ 
       negative = negative + 1; 
      } 
      System.out.println(negative); 

     } 
     return negative; 
    } 

} 

THER 오류입니다.

주 기능에서 Negativenum으로 전화해야합니다.

당신은 이런 식으로 작업을 수행 할 수 있습니다 의심 당신이 의견 요청했습니다에 관한

public static void main (String args[]) 
{ 
negativeTest nt = new negativeTest(); 
int [] array = new int[]{ 100,200 }; 
int count = nt.Negativenum(array); 
System.out.println(count); // It will print **2** 
} 

합니다.

함수에서 반환 할 값은 호출 함수의 반환 값을 사용하려는 경우에만 반환해야합니다. 그 값을 콘솔에 출력하거나 그 값을 기록하려면 negativeTest 함수에서 쉽게 수행 할 수 있으며이 함수의 반환 유형을 void로 변경할 수 있습니다.

참고로, 소문자로 클래스 이름을 시작하면 안됩니다.

+0

설명문을 추가하여 관련성을 높이십시오. –

+0

그래서 내가 음수로 돌려 준다면 print 문이 필요 없다. 당신의 말은 당신이 리턴 타입을 가지고있을 때 무엇입니까? public static "return type"negativeNum (int [] 배열) 리턴 메소드 헤더에서 지정한 시간과 똑같은 시간을 리턴해야합니까? –

+0

그렇지 않으면 무효를 사용하면 필요하지 않습니까? –

1

함수 서명은 int 유형의 반환을 제안하지만 함수에서 아무 것도 반환하지 않습니다. Eclipse가 void를 반환하도록 함수 서명을 변경하는 것이 좋습니다.

return negative;을 추가하는 경우 Eclipse에서 통지하지 않아야합니다.

단순히 개수를 인쇄하려는 경우 반환 유형을 변경해야합니다.

다음
public static void NegativeNum(int[] array, out int negative) 
{ 
    negative = 0; 
    foreach(int i in array) { if (i < 0) negative++; 
} 

그냥이 메서드가 호출 될 때마다 부정적인 선언하고 전달할 : 당신은 아무것도를 반환 할 해달라고하면

+0

고마워요. 그래서이 방법은 제가 의도 한 것처럼 작동할까요? –

+0

나는 그가 무엇보다도 먼저 돌아오고 싶다는 것을 모른 채 아무것도 돌려주지 않을 것을 제안하지 않을 것이다. – Isaac

+0

그럼 약간의 범위 문제가 있습니다. 'println'가'for' 루프의 본문에 있으므로 배열의 각 항목에 대한 카운트를 계속 출력 할 것입니다. 그 (및 반환 형식 불일치) 이외의, 그것은 괜찮아 보입니다. –

0

은 무효하지만,과 같이, 아웃 변수를 추가하여 메소드 서명을 설정 아웃의 변수 :

int negative = 0; 
NegativeNum(array, out negative); 

그 통화 이후에, 음극은 상기 방법에 의해 결정된 음의 수의 카운트를 포함 할 것이다.

+0

만약 내가 그냥 정적 int를 사용하고 싶습니다 .. 어떻게이 코드에서 return 문을 사용합니까? 나는 무효화하는 것을 시도하지 않고있다. –

+0

코드가 Java로 컴파일되지 않습니다. 큰 교훈 : 자바 **는 결코 가치에 의해서만 참조로 전달됩니다. –

+0

실제로 값을 반환하려면 먼저 반환 유형을 void 대신 int로 선언 한 다음 계산이 완료되면 "반환 횟수;"와 함께 반환하십시오. 선. if 절, switch 절, catch 절을 사용하면 해당 절 유형의 각 분기가 무언가를 반환해야하거나 컴파일러 오류가 발생합니다. 0을 반환하거나 -1을 반환하더라도 반환해야합니다. 이 메소드를 호출하는 코드는 메소드에 오류가 있었는지를 알기 위해 -1 반환을 찾는 로직을 가질 수 있습니다. – Wanabrutbeer