簡體   English   中英

錯誤:找不到符號以及如何創建對象並將其添加到 arraylist

[英]error: cannot find symbol and how to create and add objects to an arraylist

我正在嘗試創建我的配置文件 class 的對象並將它們存儲在我創建的 ProfileCollector class 中創建的 arrayList 中。

import java.util.ArrayList;

public class ProfileCollector
{
  private ArrayList<Profile> profileList;

  public ProfileCollector()
  {
    profileList = new ArrayList<Profile>();
    //peopleList = new ArrayList<String>();
  }
  public void addProfile(String initName, int initKcalTotal, int initProteinTotal, int initFatTotal){
    profileList.add(new Profile(initName, initKcalTotal, initProteinTotal, initFatTotal));

  }
}

這是我的個人資料 class:

import java.util.ArrayList;

public class Profile
{
  private ArrayList<DailyIntake> nutritionalStats;
  private String name;
  private int kcalTotal;
  private int proteinTotal;
  private int fatTotal;
  //These values represent nutritional requirements


  public Profile(String initName, int initKcalTotal, int initProteinTotal, int initFatTotal)
  {
    name = initName;
    kcalTotal = initKcalTotal;
    proteinTotal = initProteinTotal;
    fatTotal = initFatTotal;
  }

  public String getName(){
    return name;
  }
  public int getKcalTotal(){
    return kcalTotal;
  }
  public int getProteinTotal(){
    return proteinTotal;
  }
  public int getFatTotal(){
    return fatTotal;
  }

}

這是我的 main.java 中重要的部分

public static void main(String[] args) {
    ProfileCollector profiles = new ProfileCollector();
    //theres also a line that calls to a method which calls to another method with this line: profiles.addProfile(new Profile(name, optimumCalories, optimumProteins, optimumFats));
}

錯誤消息是找不到變量配置文件。 我的問題也是我是否正確創建對象並將它們添加到 ArrayList。 我不知道創建 class 是否是 go 的最佳方式,但這是我以前部分見過的方式。 任何事情都有幫助。

這是錯誤消息:

錯誤:找不到符號profiles.addProfile(new Profile(name,optimizeCalories,optimizeProteins,optimizeFats)); ^ 符號:可變型材位置:class 主要

您可以在 ProfileCollector class 中添加一個方法,該方法接受一個 Profile 實例而不是 4 個參數。 使用此 class,您應該能夠將新配置文件添加到列表中,並且您還應該能夠通過輸入創建新配置文件實例所需的 4 個參數來添加配置文件。

import java.util.ArrayList;

public class ProfileCollector
{
    private ArrayList<Profile> profileList;

    public ProfileCollector()
    {
        profileList = new ArrayList<Profile>();
        //peopleList = new ArrayList<String>();
    }
    public void addProfile(String initName, int initKcalTotal, int initProteinTotal, int initFatTotal){
        profileList.add(new Profile(initName, initKcalTotal, initProteinTotal, initFatTotal));
    }

    public void addProfile(Profile profile) {
        profileList.add(profile);
    }
}

您需要確保通過參數將profiles變量發送到 function,然后將其發送到您所說的另一個 function

profiles.addProfile(new Profile(name, optimumCalories, optimumProteins, optimumFats));

此外,您正在為 addProfile 提供變量類型 Profile,也許您只需要發送配置文件屬性

profiles.addProfile(name, optimumCalories, optimumProteins, optimumFats);

或者將 addProfile 更改為通過參數設置 Profile,這是最佳實踐

public void addProfile(Profile profile) {
        profileList.add(profile);
    }

如果這不是答案,您是否可以從該函數中添加一些代碼,如果您不想共享放置的代碼...

上面的兩個答案都很好。

這是一個編譯錯誤,因此您需要了解如何解釋來自編譯器的 IDE 錯誤消息 問題是您正在調用一個不存在的方法簽名。

伊瑟定義方法

public void addProfile(Profile profile)

或調用現有方法:

profiles.addProfile("Profile1", 1650, 450, 350);

使用“this”來指代 Object 中的自己的屬性。

 public void addProfile(String initName, int initKcalTotal, int initProteinTotal, int initFatTotal){
        this.profileList.add(new Profile(initName, initKcalTotal, initProteinTotal, initFatTotal));
    }

保持!

暫無
暫無

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

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