2012-03-21 2 views
0

Java에서 메소드를 처음 프로그래밍하고 있는데 컴파일 할 때 약간의 오류가 발생했으며 디버깅에도 불구하고 어디서 잘못되었는지 이해하지 못합니다. 수백 번. 마지막으로 나는 "도움을 인터넷에 의존하고있어 여기에 Return 문의 누락 - int []

문제가 내 코드의 섹션은 다음과 같습니다.

public int[] sortArray(String [] args) { 
     String temp = ""; 
     for(int x = 0; x < args.length; x++){ 
      for(int y = 1; y < args.length - 1; y++){ 
      if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
       temp = args[y-1]; 
       args[y-1] = args[y]; 
       args[y] = temp; 
      } 
     } 
    } 
} 

때마다 나는 그것이 오류를 제공 컴파일 : 나는 넣었을 때 return 문 누락"수익을 0; "을 마지막 '}'앞에있는 코드로 반환하면 잘못된 반환 유형의 오류가 발생합니다. 즉, 0은 int이며 int [] 반환이 필요합니다.

+0

컴파일하지 않으면 어떻게 수백 번 디버깅 할 수 있습니까? –

+1

나는 이것이'[숙제]라고 가정한다. 그렇지 않으면'Arrays.sort()'를 사용할 것이다. –

답변

4

정수 배열을 반환해야합니다. 메소드 서명의 정수 또는 변경 반환 유형은 void입니다.

public void sortArray(String [] args) { 
    // ... 
} 
0

정렬 방법의 서명을 void으로 변경하십시오. 그렇지 않으면 메서드의 끝에서 정렬 된 int 배열을 반환 할 것으로 예상됩니다.

당신이 당신의 정렬 된 문자열 배열을 반환 다음과 같은 귀하의 방법을 변경하려면 :

public String[] sortArray(String [] args) { 
    String temp = ""; 
    for(int x = 0; x < args.length; x++){ 
     for(int y = 1; y < args.length - 1; y++){ 
     if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
      temp = args[y-1]; 
      args[y-1] = args[y]; 
      args[y] = temp; 
     } 
    } 
    } 
    return args; 
} 
2

반환 할을 의미 방법은 무엇입니까? 귀하의 방법은 제자리에 정렬됩니다 - 왜 아무것도 반환해야합니까?

public void sortArray(String[] args) { 
    for (int x = 0; x < args.length; x++) { 
     for (int y = 1; y < args.length - 1; y++) { 
     if (Integer.parseInt(args[y-1]) > Integer.parseInt(args[y])) { 
      // Note change of declaration location: in general, declare 
      // variables with minimal scope 
      String temp = args[y - 1]; 
      args[y - 1] = args[y]; 
      args[y] = temp; 
     } 
    } 
} 

(당신이 여기에 불필요한 분석을 많이하고있는 것을 참고, 또한 당신이 당신의 내부 루프에 x의 값을 사용하지 않습니다는 ... 즉, 의도적 인 : 당신은 그냥 빈 공간 방법을 만들 수 있습니까?)

0

함수에 return 문이 없습니다! 따라서 컴파일 오류 ... 직접 args[]에 최선을 다하고 있습니다, 그래서 아무것도 (무효 기능) 당신은 아마 void

0

을 반환하지 않는 것 같다 void 형을 사용한다.

1
public String[] sortArray(String [] args) { 
      String temp = ""; 
      for(int x = 0; x < args.length; x++){ 
       for(int y = 1; y < args.length - 1; y++){ 
       if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
        temp = args[y-1]; 
        args[y-1] = args[y]; 
        args[y] = temp; 
       } 
      } 
     } 
      return args; 
    } 

에 방법을 args을 반환하거나 변경하려면

0

java 파라미터에는, C/C++로 (char * args)와 같은 참조가 붙어있다. 따라서이 섹션에서 아무 것도 반환 할 필요가 없다. 단지 호출자에서 args 배열을 사용하면 괜찮을 것이다.

0

반환 값을 반환하지 않으려면 반환 유형을 void로 변경한다. 어떤 것을 돌려 주길 원한다면 적절한 데이터 유형을 사용하십시오. 당신의 경우에는 int 배열 변수를 반환해야합니다.