2014-11-21 81 views
0

首先,我想從AddPatient()方法中檢索患者鏈接列表並在ListPatient()方法中顯示它。如何將鏈接列表從一種方法傳遞或檢索到另一種方法?

我嘗試通過更改public static void ListPatient()來檢索;方法public static void ListPatient(ListInterface<PatientDetails> patient)

package dsa; 
import dsa.LList; 
import dsa.ListInterface; 
import java.sql.Time; 
import java.util.Date; 
import java.util.Scanner; 

public class EmergencyClinic { 


    public static void main(String[] args){ 

     MainMenu(); 

    } 

    public static void MainMenu(){ 

     int n = 0; 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Welcome to Emergency Clinic!"); 
     System.out.println("1. Add Patient"); 
     System.out.println("2. Serve Patient"); 
     System.out.println("3. List Patient"); 
     System.out.print("Please choose your option :"); 
     n = scan.nextInt(); 

     switch(n){ 
      case 1: AddPatient(); 
       break; 
      case 2: ServePatient(); 
       break; 
      case 3: ListPatient(); 
       break; 
      default : System.out.println("Sorry! Invalid Input. Returning to main menu...\n"); MainMenu(); 
       break; 
     } 


    } 

    public static void AddPatient(){ 

     ListInterface<PatientDetails> patient = new LList<PatientDetails>(); 
     Scanner scan = new Scanner(System.in); 
     int num=0; 

     System.out.print("Please Enter Name :"); 
     String name = scan.nextLine(); 
     System.out.print("Please Enter IC No :"); 
     String ic = scan.nextLine();  
     System.out.print("Please Enter Contact Number :"); 
     String contactNum = scan.nextLine(); 
     System.out.print("Please Enter Gender :"); 
     String gender = scan.nextLine(); 
     Date date = new Date(); 
     Long time = date.getTime(); 
     System.out.print("Please Enter Reason :"); 
     String reason = scan.nextLine(); 
     System.out.print("Please Enter Seriousness :"); 
     String seriousness = scan.nextLine(); 

     if(patient.isEmpty()) 
     { 
      patient.add(new PatientDetails(name, ic, contactNum, gender,date ,time ,reason,seriousness)); 
     } 

     MainMenu(); 


    } 

    public static void ServePatient(){ 

    } 

    public static void ListPatient(){ 

     ListInterface<PatientDetails> patient = new LList<PatientDetails>(); 
     System.out.println(patient.getLength()); 
     if (!patient.isEmpty()) 
     { 
      for(int i=0;i<patient.getLength();i++){ 
      patient.getEntry(i); 
      } 
     } 
     else 
     { 
      System.out.println("Error in list patients!"); 
     } 
    } 
} 
+0

你知道'void'在方法簽名中意味着什麼嗎?你知道方法*參數*是什麼嗎? – drewmoore 2014-11-21 20:51:02

回答

1

看來,添加,列表和服務是三個功能。你所有的方法都是靜態的,那麼你需要一個靜態的PatientList變量。也就是說,當用戶選擇add時,他在列表中添加了元素,當他選擇list時,將顯示相同的列表對象。

在只是在你的類中聲明代碼:

private static ListInterface<PatientDetails> patient = new LList<PatientDetails>(); 

在您添加和列表的方法,直接使用這個變量。

+0

非常感謝,它適合我! – 2015-06-06 20:44:29

0

你的所有方法都被標記爲無效這是行不通的。這意味着沒有回報價值。有人可能會說,它們是程序,而不是功能。 如果你想返回一個列表,您必須更改簽名:

public static List AddPatient() 

然後你可以使用關鍵字回報從方法返回列表中。

return patient; 

括號()中的參數都是輸入參數。

這是一個非常基本的方法/功能的概念。我建議讀者閱讀一本書,瞭解Java的基礎知識。

另外Java有它自己的通用實現linked list。你應該使用它,如果你沒有任何特殊的要求它的實施。