2011-12-07 2 views
2

읽을 수있는 최대 4 줄의 텍스트 파일이 있습니다. 각 줄에는 탭으로 간격을 둔 문자열과 정수가 혼합되어 있습니다.각 줄의 배열에 개체를 저장하면서 한 줄씩 파일 읽기

성공적으로 내 프로그램이 1 줄을 읽고 모든 정보를 적절한 지점에 저장하는 동시에 배열에 새 개체를 저장했습니다.

문제 : 읽은 행에 따라 배열에 새 개체를 저장하는 동안 여러 줄을 읽는 방법을 알아낼 수 없습니다.

public void addVehicle(Vehicle Honda[]) throws FileNotFoundException 
{ 
    Scanner reader = new Scanner(file); 

     if(canAddVehicle() == true) 
     { 
     for(int i = 0; i < vehicles.length; i++) 
     { 
      if(vehicles[i] == null) 
      { 
       Honda[i] = new Vehicle(); 
       Honda[i].readRecord(reader); 
       vehicles[i] = Honda[i]; 
       reader.close(); 
       break; 
      } 
     } 
      System.out.println("Vehicle Added!"); 
     } 
     else 
     { 
      System.out.println("You can not add more than 4 vehicles."); 
     } 
} 

그리고 readRecord() 메소드 :

public void readRecord(Scanner reader) 
{ 
    while(reader.hasNextLine()) 
    { 
     setMake(reader.next()); 
     setModel(reader.next()); 
     setYear(reader.nextInt()); 
     setvin(reader.next()); 
     setValue(reader.nextDouble()); 
     setMilesDriven(reader.nextInt()); 
     setLastOilChange(reader.nextInt()); 
    } 
    reader.close(); 
} 
+1

"reader.close()" – ComputerSaysNo

+0

어떻게 차량 배열의 길이를 선언하고 초기화합니까? 또한 Java 규칙을 좀 더 읽어 보시기 바랍니다. 대부분의 구문 규칙을 올바르게 따르지는 않습니다. 예를 들어 Honda는 대문자로 표기하면 안됩니다. 일반적으로 클래스 만 대문자가됩니다. 또한 'Vehicle [] honda'와 같이 배열의 왼쪽에 대괄호를 옮기는 것이 좋습니다. – Andrew

+0

'if (canAddVehicle() == true)'는'if (canAddVehicle())'와 같습니다. 또한'스캐너 판독기 = 새 스캐너 (파일);가'if' 블록 내에서 이동할 수 있습니다. –

답변

0

마지막으로 내 문제가 해결되었습니다.

public boolean addVehicle(Vehicle[] Honda) throws FileNotFoundException 
{ 
    boolean found = false; 
    int position = 0; 
     if(canAddVehicle() == true) 
     { 
      for(int i = 0; i < vehicles.length && !found; i++) 
      { 
       if(vehicles[i] == null) 
       { 
        position = i; 
        found = true; 
       } 
      } 

       Scanner reader = new Scanner(file); 
       while(reader.hasNext()) 
       { 
        Honda[position] = new Vehicle(); 
        Honda[position].readRecord(reader); 
        vehicles[position] = Honda[position]; 
        position++; 

       } 
       reader.close(); 
       return true; 
     } 
     return false; 
} 
3

만 성공적으로 하나 개의 자동차를 저장할 수있는 경우 여기에

는 배열의 객체를 파일을 받아와 저장 내 방법입니다 예를 들면 독자가 너무 빨리 닫히기 때문입니다.

addVehicle에서

가(), readRecord()

reader.close(); 

의과에서 제거) (addVehicle의 끝에서 독자를 닫습니다

reader.close(); 

제거.

+0

도움이되었지만 파일의 마지막 줄만 읽는 중입니다. – MJ93