簡體   English   中英

java中的構造函數和方法

[英]Constructors and methods in java

我想創建下面的類

associatename:String
workstatus:String 
associate() :constructor
getassociatename():String
setassociatename(String):void
getworkstatus()String
tracksassociatestatus():int
setworkstatus(String):void

trackAssociateStatus 方法以天數為參數,並根據天數設置助理的工作狀態。 前 20 天他們學習“C”,接下來的 20 天他們學習“Java” 在 Main 類中調用 trackAssociateStatus 方法並查找工作狀態並顯示輸出。

輸出:助理 abc 工作狀態:項目階段

我試過這個....但我有錯誤

//associate class
public class associate{
    private int associatename;
    private String workstatus;
    private int days;
    void associate()
    {
         getassociatename();
         setassociatename();
         getworkstatus();
         tracksassociatestatus();
         setworkstatus();
    }
        public int getassociatename()
        {
            return associatename;
        }
        public void setassociatename(int associatename)
        {
            this.associatename=associatename;
        }
        public String getworkstatus()
        {
            return workstatus;
        }
        public void tracksassociatestatus(int days)
        {
            if(days<20)
                setworkstatus("C");
            else
                setworkstatus("Java");
        }
        public void setworkstatus(String workstatus)
        {
            this.workstatus=workstatus;
        }

}

//main class
 associate a =new associate();
        Scanner in=new Scanner(System.in);
        int associateid=0;
        String workstatus=null;
        int days=0;
        System.out.println("Enter the associateid:");
        associateid=in.nextInt();
        a.associateid=(associateid);
        System.out.println("Enter the no of days:");
        days=in.nextInt();
        a.trackassociatestatus();
        System.out.println("The id is "+a.getassocaiteid()+" work status "+a.getworkstatus());

根據您的(看似)UML 規范,您的類將如下所示:


public class Associate {

  private String associateName;
  private String workStatus;

  public Associate() {
    // This constructor is optional, a no-args constructor is added by the compiler to any class not explicitly naming a constructor.
  }

  public String getAssociateName() {
    return associateName;
  }

  public void setAssociateName(String associateName) {
    this.associateName = associateName;
  }  

  public String getWorkStatus() {
    return workStatus;
  }

  public void setWorkStatus(String workStatus) {
    this.workStatus = workStatus;
  }  

  public int tracksAssociateStatus() {
    // TODO write logic here
    return 1; // TODO change to whatever you need to return
  }
}

您正在為getAssociateName指定int ,當associateNameString 這行不通; 您需要 getter 返回類型與您的字段數據類型相同,或者您需要將數據轉換為方法的返回類型。 (前者是最佳實踐)。

構造函數不指定類型,使用類名,編譯器將理解您想要做什么(即返回類的新實例)。 因此,您的void associate()將告訴編譯器“創建一個不返回任何內容的名為 associate的方法”。

好吧,如果您為我們提供錯誤本身就好了。

但是同時,您是否注意到您的trackingassociatestatus方法接收一個整數參數days ,而您的構造函數沒有向它傳遞任何內容?

因此,嘗試將構造函數更改為以下內容:

Public associate() {
     getassociatename();
     setassociatename();
     getworkstatus();
     tracksassociatestatus(10);
     setworkstatus();
}

要獲得更清晰的代碼,請查看其他答案。

如果您仍然有錯誤,請分享。

import java.util.*;

public class Associate
{
    private String associateName;
    private int workStatus;
    private int days;
    Scanner sc = new Scanner(System.in);

    public String getAssociateName()
    {
        System.out.println("Enter the Associate id:");
        associateName = sc.nextLine();
        return associateName;
    }

    public void setassociatename(int associatename)
    {
        this.associateName=associateName;
    }
    
    public String tracksAssociatename() 
    {
        return associateName;
    }

    public int getWorkStatus()
    {
        System.out.println("Enter the number of days");
        days = sc.nextInt();
        return days;
    }

    public void setWorkStatus(String workStatus)
    {
        this.workStatus=workStatus;
    }
    enter code here
    public `enter code here`int tracksAssociateStatus() 
    {
        return days;
    }

    public static void main(String args[])
    {
        Associate obj = new Associate();
        obj.getAssociateName();
        obj.getworkstatus();
        System.out.println("The Associate name "+obj.tracksAssociatename()+" work Status "+obj.tracksAssociateStatus());
    }
}

暫無
暫無

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

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