2012-02-21 2 views
1
public class driver 
{ 
private static ArrayList<String> arrayList ; 
TownBankRecord TBR = new TownBankRecord(); 
ArrayList<Record> TBList = new ArrayList<Record>(); 

public void getDate() 
{ 
try 
{ 

    BufferedReader br = new BufferedReader (new FileReader ("data/bank-data.csv")); 
    String line= " "; 
    int tokenCount=0; 
    //BankRecord bank= new BankRecord(); 

    while((line=br.readLine())!=null) 
    { 
     if (!line.equals(",")) 
     { 
      StringTokenizer st = new StringTokenizer(line,","); 
      while (st.hasMoreTokens()) 
      { 
       arrayList.add(st.nextToken()); 
       tokenCount++; 
      } 
     } 

     if (tokenCount==11) 
     { 
      er = new TownBankRecord(arrayList); 
      TBList.add(er); 

      tokenCount=0; 
     } 
    } 
} 
catch (FileNotFoundException ex) 
    { 
     System.out.println(ex.getMessage()); 
    } 
catch (IOException e) 
{ 
    System.err.println("Caught IOException: " 
         + e.getMessage()); 

} 
} 
} 

위의 코드는 CSV 파일에서 읽습니다. 각 줄에서 토큰을 가져온 Stringizer를 사용하여 StringList의 ArrayList로 전송합니다. 그런 다음 ArrayList가 TownBankRecord의 객체 er으로 전송 된 다음 TBlist (Record 데이터 유형)로 최종 전송됩니다. 다음 오류가 발생했습니다.ArrayList 초기화 오류

cannot find symbol 
symbol: variable er 
location: class nidhin.driver. 

아이디어가 있으십니까?

+0

답변을 수락 하시겠습니까? 우수하고 정답이 세 가지 있습니다. 당신은 심지어 최고 투표자이기 때문에 심지어 내 것을 받아 들일 필요가 없습니다. – CajunLuke

답변

2

er을 변수로 선언하지 마십시오. 또한 선언 한 클래스 필드 인 TBR을 사용하지 마십시오. 이것들은 같은 것입니까?

+0

예, er는 절대 선언되지 않았습니다. 처음에는 TBR에 대해서는 아무 것도 없습니다. 나중에 프로그램에서 사용하겠습니다. –

+0

어떻게 선언합니까? –

+2

TownBankRecord er = new TownBankRecord (arrayList); –

1

변경이에

er = new TownBankRecord(arrayList); 
TBList.add(er); 

: 어디서든 er를 선언하지 않은 것처럼

TBList.add(new TownBankRecord(arrayList)); 
1

보인다. 클래스에 er을 멤버로 선언 할 수 있습니다. getDate() 메서드에서 er을 선언 할 수도 있습니다. 사용하기 전에 er을 초기화해야합니다. 그것은 완전히 귀하의 요구 사항에 따라 다릅니다. 나는 당신이 arrayList을 정적으로 만든 것을 볼 수 있습니다. 같은 파일을 여러 번 읽는다면 arrayList을 정적 변수로 만들 필요가 없으며 클래스 멤버가 아닌 메서드에서 선언하는 것이 가장 좋습니다.