2017-04-30 2 views
0

파일 판독기에서 일부 데이터를 읽은 다음 데이터를 모델링하는 다른 클래스의 인스턴스를 작성하는 프로그램이 있습니다. 어쨌든 그 클래스는 작동합니다 (하드 코딩 된 값으로 테스트되었습니다).하지만 이제 환자의 인스턴스 데이터를 파일 판독기에서 읽지 만 보이지는 않는 것처럼 보입니다.Java - 파일 판독기 및 출력의 인스턴스를 작성하십시오.

아무도 내가 잘못 가고 있다고 말할 수 있습니까?

+3

첫 번째 문제는 예외 처리기가 예외를 인쇄하지 않는다는 것입니다. 오류를 보려면 printStackTrace()를 호출해야합니다. – OldProgrammer

+0

실제로 데이터를 직접 출력 할 수는 있지만 우선 순위 큐에서 원하는 작업을 수행하지 못하고 작동하지 않지만 일부 하드 코딩 된 값과 함께 사용할 수 있습니다. 문제의 루프에 대한 내용은 다음과 같습니다. – AP010AP

답변

1

newPatient 컬렉션에 환자 인스턴스를 추가하지 않으므로이 인스턴스가 비어있어 아무 것도 인쇄되지 않습니다. 대기열에 요소 추가 :

while(scan.hasNextLine()){ 
      String firstname = scan.nextLine(); 
      String surname = scan.nextLine(); 
      String illness = scan.nextLine(); 
      int illnessSeverity = scan.nextInt(); 
      String newLine = scan.nextLine(); 

      newPatient.add(new Patient(firstname,surname,illness,illnessSeverity)); 

     for (Patient newPatientData : newPatient) { 
      System.out.println(newPatientData); 
     } 
1

먼저 우선 순위 대기열에 데이터를 추가해야합니다. 나는 당신이 그것을 놓친 것 같아요.

PriorityQueue<Patient> newPatient = new PriorityQueue<>(); 
    File fileName = new File("patients.txt"); 

    Scanner scan = null; 

    try { 
     scan = new Scanner(fileName); 
     while(scan.hasNextLine()){ 
      String firstname = scan.nextLine(); 
      String surname = scan.nextLine(); 
      String illness = scan.nextLine(); 
      int illnessSeverity = scan.nextInt(); 
      String newLine = scan.nextLine(); 

      Patient newP = new Patient(firstname,surname,illness,illnessSeverity); 
    newPatient.add(newP); 
      } 

     for (Patient newPatientData : newPatient) { 

      System.out.println(newPatientData); 
     } 


     } catch(Exception e) { 
      System.out.println("ERROR - file not found"); 
     } 
+0

아, 예, 감사합니다. ! 하지만 위의 코드를 보니 우선 순위 큐가 제대로 작동하지 않습니다. 어떤 제안? 하드 코딩 된 데이터에서 작동하는 것 같습니다. 이 메소드의 원본 메시지보기 – AP010AP

+0

대기열의 poll() 메소드를 사용하지 않았기 때문입니다. 루프 반복자가 정렬 된 순서로 반환되지 않습니다. for 루프 대신에이 작업을 수행하십시오 (! newPatient.isEmpty()) {System.out.println (newPatient.poll());} – Vikrant

+0

아, 고맙습니다. – AP010AP