2012-10-24 13 views
0

작성한 메소드에서 사용자 입력 문자열의 배열을 반환하기위한 것입니다. 내가 컴파일러에 가지고있는 문제는 이 userData[i]=tempData;return userData;에 초기화되지 않는다는 것입니다. 나는 왜이 오류가 발생하는지 확신 할 수 없기 때문에 약간의 피드백을 원합니다.배열을 처리 할 때 변수가 초기화되지 않았을 수 있습니다.

public String[] getStringObj() { 
    int i = 0; 
    String tempData; 
    String[] userData; 
    Boolean exitLoop = false; 
    System.out.println("Please list your values below, separating each item using the return key. To exit the input process please type in ! as your item."); 
    do { 
     tempData = IO.readString(); 
     if (tempData.equals("!")) { 
      exitLoop=true; 
     } else { 
      userData[i] = tempData; 
      i++; 
     } 
    } while (exitLoop == false); 
    return userData; 
} 
+1

[변수가 초기화되지 않았습니다 오류가 발생했습니다.] (0120-385-3300)이 시간에 – epoch

+0

컴파일러가 올바른 것입니다. _variable이 초기화되지 않았습니다. _ – manas

답변

0

는 :

  1. 당신은 그 exitLoop 플래그가 필요하지 않습니다; 그냥, 경계없이 배열에 물건을 추가하는 대신 배열의 ArrayList 사용할처럼 당신이 (추가 보너스를,이 너무 i를 제거한다) 것 때문에 단지

    while(true) { 
        String input = IO.readString(); 
        if(input.equals("!")) { 
         break; 
        } 
        /* rest of code */ 
    } 
    
  2. 을 수행

    List<String> userData = new ArrayList<String>(); 
    ... 
    userData.add(line); 
    

이 두 가지를 수행하면 코드가 훨씬 간결하고 쉽게 수행됩니다.

0

귀하의 userData이 initilaized되지 않고 당신이 초기화되기 전에 여기 userData[i]=tempData; 그것을 사용하려고합니다.

당신은 String[]를 초기화하지 않은 while(!exitLoop) 대신

+0

사용자가 입력 할 수있는 문자열 값의 수에 제한이 없습니다. 길이에 대해 임의로 큰 숫자를 넣을 수 있고 tailing null 값을 제거하기 위해 크기를 재조정 할 수있는 방법이 있습니까? – nonterrorist

+0

'ArrayList'를 더 잘 사용하십시오 .- 요소가'ArrayList'에 추가 될 때, 그 용량은 자동으로 커집니다. – Abubakkar

0

while(exitLoop==false)의 당신이 할 수 while 상태 또한

String[] userData = new String[20]; 

//20 is the size of array that I specified, you can specify yours 

로 초기화합니다. 그냥 String[] userData = new String[length]하십시오. 길이가 확실하지 않은 경우 ArrayList<String>을 사용할 수 있습니다. 개선 코드 품질의 이익에

관련 문제