2014-01-14 10 views
0
public static double[] processUserInput(String data) { 
     String[] arrayInString; 
     double[] arrayInDouble; 
     int length; 

     if(data.contains(",")) { 
      arrayInString = data.split(","); 

      length = arrayInString.length; 

      for(int i = 0; i < length; i++) { 
       arrayInDouble[i] = Double.parseDouble(arrayInString[i]); 
      } 
     } 

     return arrayInDouble; 

    } 

Netbeans를 사용하고 있으며 컴파일러에서 변수 arrayInDouble이 초기화되지 않았을 수 있습니다. 그게 무슨 뜻 이죠?"변수가 초기화되지 않았을 수 있습니다"는 의미는 무엇입니까?

+0

String [] arrayInString; double [] arrayInDouble; 변수가 initailized되지 않을 수 있다는 경고를받는 이유가이 배열을 초기화하지 않았습니다. – Rahul

+0

이렇게하면 'double [] arrayInDouble = new double [] {};' 그것은 문제를 해결하지만 arrayInString은 그것에 대해 불평하지 않습니다! – Joshua

+1

@Joshua'arrayInString'을 사용할 때만'data.contains (",")'가 true이고,이 경우 사용하기 전에 초기화됩니다. 따라서 컴파일러는 사용하기 전에 해당 변수를 초기화해야합니다. 여기서 문제는'data.contains (",")'false 인 경우 초기화하지 않고'arrayInDouble'을 사용하고있는 것입니다 (그러나'arrayInString'을 사용하지 않을 것입니다.) 왜 그런 식으로 불평하지 않는가? 그 변수에 대해). –

답변

1
String[] arrayInString; 

이 초기화하지만 당신이 그것을 참조하기 전에 값 (arrayInString = data.split(",");)을 제공하지 않습니다 그래서 아무 불만이 없다 .

double[] arrayInDouble; 

이 또한 초기화되지 않았습니다. 입력에 쉼표가 없으면 모든 코드를 건너 뛰고 arrayInDouble의 값을 반환하려고 시도합니다. 경고에 따르면 return을 실행하면 arrayInDouble에 값이 없을 수 있습니다.

0

사용하기 전에 초기화 (일부 값 지정)해야합니다.

+0

이렇게하면 'double [] arrayInDouble = new double [] {};' 그것은 문제를 해결하지만 arrayInString은 그것에 대해 불평하지 않습니다. 왜 그런가요? – Joshua

+0

@ Joshua : 여기에 값을 지정 했으므로'arrayInString = data.split (","); ' – xyz

0

당신은 그들에 대한 기본 값을받지 않습니다으로 사용하기 전에 초기화 할 필요가 있으므로

String[] arrayInString; 
double[] arrayInDouble; 

이 변수는 지역 변수 이러한 변수에 어떤 값을 할당하지 않았습니다. 당신이 그들을 사용하기 전에이

String[] arrayInString; 
double[] arrayInDouble; 

에서

+0

이 답변을 게시하는 동안 내가 한 실수를 알고 싶습니다. –

+0

나는 재미를 위해 그것을하고있는 누군가를 추측한다. :(내 질문은 또한 downvoted이다 – Joshua

1

당신이 단지를 선언하는, 당신은 또한 초기화해야합니다 length 배열의 길이입니다

String[] arrayInString = new String[length1]; 
double[] arrayInDouble = new double[length2]; 

.

PS :을 초기화 할 수있는 다른 방법은 예를 들어, 다음과 같습니다

double[] arrayInDouble = {1.1, 2.2}; // The length of the array will be the number of elements in brackets 
+0

유선 것 : 'string [] arrayInString = 새로운 문자열 [3];'사용 된 적이없는 '할당 된 값을 불평한다'... – Joshua

+0

String 배열이 java.lang 인 경우 객체가 double입니다. 동일한 동작을 나타냅니다. – hd1

+0

@Joshua 오류입니까? 아니면 경고입니까? 경고이면 경고하지 않습니다. 이 배열은'arrayInString' 배열을 가지고 있습니다. 단지 테스트 용이므로 무시할 수 있습니다 ** 경고 ** – Christian

관련 문제