2014-03-18 3 views
1

필요한 값을 반환하는 것에 대해 혼란스러워합니다. 여기 내 코드의 일부입니다 :클래스에서 필요한 값 반환 - Java

public class StrNum { 

    public static int getInt(String input) {   
     String str = new String(input); 
     int result; 

     if (str.startsWith("b")) { 
      str = str.substring(1); 
      result = Integer.parseInt(str, 2); 
     } 
     else if (str.startsWith("x")) { 
      str = str.substring(1); 
      result = Integer.parseInt(str, 16); 
     } 

이제 반환해야 할 것은 결과입니다. return result;을 쓸 때 변수를 초기화하라는 메시지가 표시됩니다 (초기화되지 않았 음을 알고 있습니다). if 문 안에 return result을 사용하면 Eclipse에서 값을 반환해야한다고 알려줍니다. 나는 여기서 어리 석다? 나는 좋은 설명에 감사 할 것이다.

+2

int result = 0; –

+0

소문자로 변수를 시작해야합니다. –

답변

5

"b" 또는 "x"으로 시작하지 않으면 어떤 방법으로 getInt()이 반환됩니까? result이 초기화되지 않으므로 오류가 발생합니다. 당신은 당신이이 경우에 반환하고자하는 값으로 result을 intializing으로이 문제를 해결할 수 :

int result = -1; // for example 

편집 : 당신이 수는 다음과 같이 해석 할 수 있는지를 확인하는 input을 사용하려는 때문에

바이너리 또는 16 진수, 나는 기본적으로 기본 10 수를 구문 분석하는 다른 문을 추가 할 추천 :

if (...) 
    // ... 
else if (...) 
    // ... 
else 
    result = Integer.parseInt(Str); 

참고 :

  • Java 명명 규칙을 따르십시오. 변수/메소드에는 someVar과 같은 이름을 사용하고 클래스에는 SomeClass과 같은 이름을 사용하십시오.
  • 나중에 같은 방법으로 원래 입력을 사용하지 않는 한 새로운 문자열 인스턴스 Str을 만들 필요가 없습니다.
  • 당신이 후 추가 계산을 수행하지 않습니다 제공, 당신은 단순히

    String str = input;

+0

그래서 "조건"에 맞지 않는 값으로 "결과"를 초기화해야합니까? – user3383621

+2

@ user3383621 Christian에 의해 예제에서와 같이 -1로 초기화하면 원하는 값을 얻지 못했을 때 테스트 할 수 있습니다. 즉,'if (result == -1) System.out.println ("당신이 망쳤습니다.);'와 같은 것을 사용할 수 있습니다.결과를 초기화해야하는데 그렇지 않으면 작동하지 않습니다. '-1'은 단지 예일 뿐이므로 오류를 검사하는 데 사용할 값으로 초기화 할 수 있습니다. –

+0

감사합니다. 지금은 이해합니다. – user3383621

1

귀하의 캔을 하나 else에서도 if에서 결과를 반환 할 수 있습니다 동일한 내용으로 String를 만들려면 else 블록.

또는 간단히 result = 0으로 초기화하십시오. 반환하기 전에 변경됩니다.

1

는 =

int result = 0; 당신은 결과를 어떻게 그들을 반환하기 전에 또는 즉 변수를 초기화해야보십시오. 변수는 응용 프로그램이 어떤 코드 경로를 사용하더라도 상관없이 항상이어야합니다.

+0

이것은 부분적으로 정확합니다. 인스턴스 및 클래스 변수는 자동으로 0 또는 null 또는 이와 동등한 것으로 초기화됩니다. –

+0

만약 내가 틀렸다면 나를 정정하십시오. 그러나 변수에 기본값이 있고 달리 정의되어 있지 않으면 기본 값으로 설정되어있어서 초기화 된 것으로 간주됩니다. – user2277362

+0

'디폴트 값을 가진 변수 '가 무슨 뜻인지 확실치 않습니다. http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.5이 변수의 경우에는 다음을 참조하십시오. 클래스 나 인스턴스 변수 또는 배열 구성 요소 인 경우에만 사양에 따라 초기화됩니다. 이러한 변수가 지역 변수이면 자동으로 초기화되지 않으므로 프로그래머가 초기화해야합니다. 그렇지 않으면 프로그램이 컴파일되지 않습니다. 이것이 당신의 대답이 부분적으로 정확하다고 말한 이유입니다. –