2014-06-07 2 views
1

String 'chc'를 돌려주는 메소드 'charCount()'를 썼지 만, 네이비가 null를 돌려 주도록 (듯이)하고있다. 'return null'도이 메소드 밖에서 'chc'를 사용하지 못하게하는지, 아니면 잘 반환 되는지요? Java에 익숙하지 않은 나는 혼란 스럽다.null을 돌려주는 대신에 java string을 돌려 준다

  // static String chc ; 

public static String charCount(String [] a){ 

      String chc ; 

    for (int i = 0; i < a.length; i++) { 
     for (int j = 0; j < a[i].length(); j++) { 
      char ch = a[i].charAt(j); 
      int charcout = a[i].length(); 
      chc= Character.toString(ch)+""+Integer.toString(charcout)+" "; 
      // String chc= ch + "" + charcout + " "; 
      return chc; 
      //System.out.print(chc); 
     } 
    } 
    return null; //NETBEAN IS FORCING ME TO WRITE THIS TO AVOID COMPILE TIME ERROR 
} 

null이 발생하지 않도록이 코드를 수정하는 데 도움이 필요합니다.

+1

''''을 돌려주지 않는 이유는 무엇입니까? – awksp

+1

chc는 범위 외부에서 사용할 수 없습니다. for loop before for chc를 선언 할 수 있습니다. – Raj

+1

귀하의 목표가 배열의 모든 문자열에서 모든 문자의 빈도를 설명하는 문자열을 반환하는 것이라면이 방법의 논리는이를 달성하지 못합니다. 일단 논리를 고치면, 메소드 끝에서'return null '을 요구하는 것은 무의미해질 것입니다. (루프의 중간에서'return'을 호출하면 두 루프가 한번 이상 실행되지 않을 것임을 의미합니다.) – VGR

답변

2

루프가 실행되지 않을 경우를 대비하여 단순히 "기본값"값을 반환하기 만하면됩니다 (배열에 요소가없는 경우). null 또는 String (또는 String의 하위 클래스를 반환 할 수 있지만 그 중 아무 것도 없습니다).

chc은 내부 루프의 범위 내에 정의되어 있기 때문에 chc을 사용할 수 없습니다. 이에 대한 자세한 정보가 필요하면 "가변 범위"를 조사해야합니다.

+0

가변 범위를 많이 알고 있습니다. 이미 루프 외부에서 두 곳을 시도했지만 반환 null은 여전히 ​​있습니다. 넷빈이 컴파일을 원했다. – Soon

+0

내가 당신에게서 따랐던 것은 배열이 비어있는 경우에 'return null'이 활성화되어있는 경우 반환 null이 여기에있는 것입니다. 프로그래밍에 익숙하지 않은 것은 새로운 교훈입니다. 나는 코드를 편집하여 친절하게 그것이 문자열 "chc"를 반환 할 수 있는지 확인합니다. 그렇지 않은 경우 코드에서 "chc"를 리턴하는 데 필요한 변경이 필요합니다. – Soon

+0

항상 * something * :'null' 또는'String'에서 상속되거나 상속되는 형식을 반환해야합니다. 또한 당신이 갖고있는 것들을 컴파일하지 않도록 * 지역 변수를 초기화해야합니다. 'return null','return chc' 또는'return "chc"'를 쓸 수 없습니다. –

0

Java 로컬 변수 은 사용 전에으로 초기화해야합니다. 컴파일러는 루프가 값을 반환하는지 또는 반복 할지를 확신 할 수 없습니다.

하지만!

왜 변수를 사용하고 있습니까? 제거하십시오!

public static String charCount(String [] a){ 
    for (int i = 0; i < a.length; i++) { 
     for (int j = 0; j < a[i].length(); j++) { 
      char ch = a[i].charAt(j); 
      int charcout = a[i].length(); 
      return Character.toString(ch)+""+Integer.toString(charcout)+" "; 
     } 
    } 
    return null; 
} 

이 코드는 귀하의 것과 동일하지만 변수를 사용하지 않습니다.

내부 루프의 첫 번째 반복에서 반환하므로 루프에 많은 점이 보이지 않습니다. 논리에 오류가있을 수 있습니다.

관련 문제