簡體   English   中英

如何將鏈接列表從一種方法傳遞或檢索到另一種方法?

[英]How to pass or retrieve linked list from one method to another method?

首先,我想從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!");
        }
    }
}

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

在類中的代碼中聲明:

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

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

您所有的方法都標記為無效。 這意味着沒有返回值。 也許有人會說,它們是程序,而不是功能。 如果要返回列表,則必須更改簽名:

public static List AddPatient()

然后,您可以使用關鍵字return從該方法返回列表。

return patient;

方括號()中的參數均為輸入參數。

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

Java也有它自己的鏈表的通用實現。 如果對它的實現沒有特殊要求,則應使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM