簡體   English   中英

如何使用另一個類的實例變量接受用戶輸入?

[英]How do I accept user input with a instance variable of another class?

我有一個大學的任務,我們必須序列化一個名為Current的子類。 我們必須要求用戶輸入新的當前帳戶的詳細信息,以便可以序列化。

我有一個類層次結構,其中Account類是超類。 應該可以添加,查看,列出,編輯和刪除當前對象。 我們不能要求用戶添加他們的帳號,因為這是通過靜態變量完成的。 例如: **accountNo** = **nextAvailableNumber++** ;

我必須接受用戶名和dateOpened的詳細信息,我已經編寫了一個Name類,但Name類有一個名為name的Name類型的變量,所以我不能將它用作子類中的String。 它給了我一個不匹配的異常,無法將String轉換為Name和mismatch異常,無法將date轉換為Date為DateOpened

我的問題是。 如果我必須接受用戶輸入。 我應該在Name類中使用Type Name的name變量來獲取輸入,我應該對Date類型的**dateOpened**變量做同樣的**dateOpened**嗎? 我應該鑄造嗎? 這是我的代碼,它是一個基於菜單的系統,允許用戶設置帳戶。

//名稱類名稱變量類型Name && Date變量**dateOpened**類型為Date。

package ie.lyit.bank;

public abstract class Account
{
    protected Name name;        // COMPOSITION - Account HAS-A name (object of class Name)
    protected String address;   
    protected double balance;
    protected Date dateOpened;  // COMPOSITION - Account HAS-A dateOpened (object of class Date)
    protected int accountNo;

    private static int nextUniqueNumber = 1;    // Next available unique Account number 

    // Default Constructor - set Instance Variables to null
    public Account()
    {
        name = new Name();      
        address= new String();  // OR address = ""; OR address = null;
        balance = 0.0;      
        dateOpened = new Date();
        // Set accountNo to static nextUniqueNumber & increment it for next accountNo
        accountNo = nextUniqueNumber++; 
    }

    // Current class with read() method
    // Read method to read in the account details from the user

    public void read()
    {
        Scanner keyboardIn = new Scanner(System.in);        
        System.out.println("ENTER ACCOUNT DETAILS ==>");
        System.out.print("ACCOUNT NAME : ");
        name = keyboardIn.nextLine();
        System.out.print("ACCOUNT ADDRESS : ");
        address = keyboardIn.nextLine();
        System.out.print("ACCOUNT BALANCE : ");
        balance = keyboardIn.nextDouble();
        System.out.print("ACCOUNT DATE OPENED : ");
        dateOpened = keyboardIn.nextInt();
    }
}

您不需要使用Name類型,您可以簡單地將其聲明為String並將其作為類變量訪問。

如果你有一個派生類,說xyz誰需要訪問超類的名稱變量說Account。

你可以像Account.Name一樣訪問它,說你已經定義如下。

class Account
{
 protected String Name;

}

class xyz extends Account
{
// here u can access using Account.Name; 
}

暫無
暫無

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

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